打开GLES 2.0 - 顶点着色器中的顶点索引

时间:2011-02-20 22:43:30

标签: glsl opengl-es

我有一些我无法控制的数据(由客户提供),其中指定了:

顶点

索引

“colorPalette”(vec4的8种不同颜色,总共32个值)

“vertexColors”数组,用于定义哪些顶点应该应用colorPalette中的哪种颜色。例如此数组中的0,0,1280表示“colorPalette中的”color'0'应应用于索引在0到1280之间的所有顶点。“

在我看来,当我定义我的GLSL顶点着色器时,我需要能够访问当前顶点的索引,以便我可以使用vertexColors确定colorPalette中的哪种颜色应用并传递给片段着色器通过使用变化。

如何找到当前顶点的索引?

感谢您的帮助,

菲尔。

P.S。我是Open GLES 2.0的新手,之前从未使用过OpenGL或OpenGLES,并且正在接受“OpenGLES 2.0编程指南”中的所有指导以及我在互联网上可以找到的任何内容。

P.P.S。在我看来,Open GLES 1.x看起来更容易:)

2 个答案:

答案 0 :(得分:2)

使用gl_VertexID内置属性。

老实说,我不知道你将如何搜索颜色数组中的颜色(给定索引)。

相反,我会为顶点颜色创建一个特殊的缓冲区对象,并将颜色缓冲区绘制到其中(绑定为目标纹理缓冲区对象)。在这种情况下,几何着色器将生成具有所需颜色的线条,如下所示:   - 在0处创建点   - 在1280点创建点数   - 从调色板中获取颜色,将其传递给片段着色器

此操作对于HW而言非常便宜,可根据您提供的调色板数据为每个顶点提供精确的颜色。

答案 1 :(得分:0)

当需要应用新调色板而不是尝试计算可能不可用的顶点索引时,是否有可能直接应用不同的着色器?老实说,我不相信GL提供您正在寻找的指数,但我绝不是该领域的专家。我会按照我的建议做,并使用多个着色器,并确定应用这些值的其他逻辑方法。