Разный цвет для двух сторон плоскости в OpenGL

Я хочу дать разные цвета для двух сторон плоскости для сетки в OpenGL.

Могу ли я использовать clip_Distance как переменные, чтобы разрезать лицо на две половины?

или путем написания пользовательского геометрического шейдера для создания вершин в плоскостях разреза.

Могу ли я использовать функцию обрезки лица, которая находится внутри драйвера opengl, используемого для отсечения?

2 ответа

Вы могли бы использоватьgl_FrontFacing в вашем фрагментном шейдере, чтобы определить, заштрихована ли в настоящее время лицевая сторона или задняя сторона, и использовать два разных цвета в зависимости от значения этого логического значения.

Для полноты картины: чтобы это работало, убедитесь, что вы визуализируете как переднюю, так и заднюю грани вашей геометрии, т.е. отключите отбраковку:

glDisable(GL_CULL_FACE);

Это было проще чем я думал

Так как фрагментный шейдер работает после растеризации, вычислите расстояние каждого фрагмента от пользовательской плоскости, используя точечное произведение плоских нормалей и интерполированных координат модели, полученных в фрагментном шейдере, и назначьте разные цвета просто с помощью оператора if.

Спасибо всем за ваши усилия!

Другие вопросы по тегам