Разный цвет для двух сторон плоскости в OpenGL
Я хочу дать разные цвета для двух сторон плоскости для сетки в OpenGL.
Могу ли я использовать clip_Distance как переменные, чтобы разрезать лицо на две половины?
или путем написания пользовательского геометрического шейдера для создания вершин в плоскостях разреза.
Могу ли я использовать функцию обрезки лица, которая находится внутри драйвера opengl, используемого для отсечения?
2 ответа
Вы могли бы использоватьgl_FrontFacing
в вашем фрагментном шейдере, чтобы определить, заштрихована ли в настоящее время лицевая сторона или задняя сторона, и использовать два разных цвета в зависимости от значения этого логического значения.
Для полноты картины: чтобы это работало, убедитесь, что вы визуализируете как переднюю, так и заднюю грани вашей геометрии, т.е. отключите отбраковку:
glDisable(GL_CULL_FACE);
Это было проще чем я думал
Так как фрагментный шейдер работает после растеризации, вычислите расстояние каждого фрагмента от пользовательской плоскости, используя точечное произведение плоских нормалей и интерполированных координат модели, полученных в фрагментном шейдере, и назначьте разные цвета просто с помощью оператора if.
Спасибо всем за ваши усилия!