在处理属性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数组以及做其他事情?
答案 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组件。