GLSL - фрагментный шейдер - каждый треугольник с отличным цветом
Я хочу написать шейдерную программу, которая будет отображать каждый треугольник сетки в отдельный цвет (чтобы я мог выбрать один треугольник). Я пытался использовать gl_PrimitiveID, но он всегда возвращает 0, например:
#version 330
out uvec3 FragColor;
void main()
{
FragColor = uvec3(0.0, 0.0, gl_PrimitiveID);
}
Этот шейдер всегда отображает черный цвет.
1 ответ
Чтобы добиться того, чего вы хотите, самым простым способом, я бы передал дополнительный вершинный массив в качестве цветового атрибута, содержащего цвета для каждого треугольника, в вершинный шейдер. Затем передайте его как переменный вывод в ваш фрагментный шейдер. Вот и все. Таким образом, вы можете указать точно цвета для каждой вершины.,