GLSL - фрагментный шейдер - каждый треугольник с отличным цветом

Я хочу написать шейдерную программу, которая будет отображать каждый треугольник сетки в отдельный цвет (чтобы я мог выбрать один треугольник). Я пытался использовать gl_PrimitiveID, но он всегда возвращает 0, например:

#version 330

out uvec3 FragColor;

void main()
{
    FragColor = uvec3(0.0, 0.0, gl_PrimitiveID);
}

Этот шейдер всегда отображает черный цвет.

1 ответ

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

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