GLSL 2.0属性问题

时间:2010-11-10 00:09:29

标签: opengl opengl-es shader

在处理属性vec4时,[]运算符会做什么?


attribute vec4 a_MatrixWeights;
...
foo(float weight);
...

void main()
{
  foo(a_MatrixWeights[0]);
  foo(a_MatrixWeights[1]);
  foo(a_MatrixWeights[2]);
  foo(a_MatrixWeights[3]);
}

这是针对vec4(.x,.y,.z,.w)的各个字段还是以某种方式处理vec4和vec4数组以及做其他事情?

2 个答案:

答案 0 :(得分:4)

是的,它是用于访问各个字段。

  

数组下标语法也可以   应用于向量来提供数字   索引。所以在vec4 pos; POS [2]   是指pos和的第三个元素   相当于pos.z [GLSL spec 1.20.8,5.5 Vector Components]

此外,数组下标可用于访问矩阵的列:

mat4 m;
vec4 c = m[1]; // access the second column of m

答案 1 :(得分:1)

是的,它正在索引x / y / z / w组件。