GLSL - 片段着色器 - 每个三角形使用不同的颜色

3

我希望编写一个着色器程序,可以将网格中的每个三角形渲染成不同的颜色(以便我可以选择其中一个三角形)。我尝试使用gl_PrimitiveID,但它总是返回0,例如:

#version 330

out uvec3 FragColor;

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

这个着色器总是渲染黑色。


你为什么在无符号整数vec3中使用浮点常量?你的GLSL编译器难道不应该至少抱怨一下吗?(例如,没有重载uvec3(...)接受2个浮点组件和一个整数)。而且,你真的要绘制到整数颜色缓冲区吗?还是这只是你尝试为了让gl_PrimitiveID工作而做的一些hack? - Andon M. Coleman
抱歉,我的错,gl_PrimitiveID 运行良好,问题出在我的帧缓冲上。 - user1784182
1个回答

4
为了以最简单的方式实现你想要的功能,我会将额外的顶点数组作为颜色属性传递到顶点着色器中,包含每个三角形的颜色。然后将其作为可变输出传递到片段着色器中。就这样。通过这种方式,你可以为每个顶点指定准确的颜色。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接