我想编写一个着色器程序,它将以不同的颜色渲染网格的每个三角形(这样我就可以选择一个三角形)。我尝试使用 gl_PrimitiveID,但它总是返回 0,例如:
#version 330
out uvec3 FragColor;
void main()
{
FragColor = uvec3(0.0, 0.0, gl_PrimitiveID);
}
此着色器始终呈现黑色。
为了以最简单的方式实现您想要的,我会将额外的顶点数组作为包含每个三角形颜色的颜色属性传递到顶点着色器中。然后将其作为不同的输出传递到片段着色器中。就是这样。这样,您可以为每个顶点指定确切的颜色。