разный цвет для двух сторон плоскости в OpenGL - PullRequest
0 голосов
/ 30 декабря 2018

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

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

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

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

0 голосов
/ 30 декабря 2018

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

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

glDisable(GL_CULL_FACE);
...