opengl - GLSL - 片段着色器 - 每个三角形都有不同的颜色

标签 opengl glsl fragment-shader mouse-picking

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

#version 330

out uvec3 FragColor;

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

此着色器始终渲染黑色。

最佳答案

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

关于opengl - GLSL - 片段着色器 - 每个三角形都有不同的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20929858/

相关文章:

如果场景中有两个模型,OpenGL 为什么只发送一个模型矩阵?

c++ - 顶点着色器无法编译,但信息日志中没有消息

java - LWJGL 纹理加载/映射问题

opengl - 为什么我的 GLSL 着色器会呈现乳沟?

javascript - 编写 Atom 编辑器插件,动画语法着色

opengl - 使用uvec3[]的统一缓冲区

c++ - 去除opengl中2个四边形相交处的白线

opengl - 片段着色器 GLSL 中未使用的可变变量 - 它们会伤害性能吗

c++ - 正交投影矩阵 - 错误位置的三角形

c++ - 使用 GLAD 时无法命名变量 "far"和 "near"