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

Lau*_*ves 8 glsl opengl-es-2.0

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

uniform vec4 lightPosition[4];
Run Code Online (Sandbox Code Playgroud)

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

attribute vec4 foo[3];  // three vec4s per vertex
Run Code Online (Sandbox Code Playgroud)

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

此外,如果它是合法的,如何使用OpenGL ES 2.0 API初始化这样的属性?(假设glVertexAttribPointer会使用,顶点/ array-elements/vector-elements的布局是什么?)

Nic*_*las 10

所述GLSL ES 2.0规范该属性状态不能被声明为阵列.

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

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

  • @LaurenceGonsalves:第4.3.3节,令人惊讶的是,"属性".这是第一段的最后一句话. (3认同)