顶点属性是否可以成为GLSL-ES 2.0中的数组?

时间:2011-11-22 00:30:14

标签: glsl opengl-es-2.0

在GLSL-ES中,可以有阵列。例如,GLSL ES Specification给出了以下数组的统一变量示例:

uniform vec4 lightPosition[4];

是否可以将顶点属性作为数组?换句话说,根据规范,以下是否合法?

attribute vec4 foo[3];  // three vec4s per vertex

GLSL ES规范中的任何地方都明确提到了答案(是或否)? (我找不到它,但我没有阅读规范的每一行。)

此外,如果它是合法的,如何使用OpenGL ES 2.0 API初始化这样的属性? (假设使用glVertexAttribPointer,顶点/数组元素/向量元素的布局是什么?)

1 个答案:

答案 0 :(得分:10)

GLSL ES 2.0 specification表示属性不能声明为数组。

在桌面GL中,您可以拥有属性数组。当为属性分配属性索引(使用glBindAttribLocation或由链接的着色器自动分配)时,它将获得连续属性,从您使用glBindAttribLocation时请求的属性开始。因此,如果foo的位置为5,则foo[0]为5,foo[1]为6,foo[2]为7。

如果有一些ES 2.0扩展允许属性数组,它可能会像这样工作。