2010-11-10 69 views
3

[]运算符在寻址属性vec4时做什么?GLSL 2.0属性问题


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的数组,做别的东西吗?

回答

4

是的,它是用于访问个别领域。

数组下标语法也可以是施加于载体 提供数字 索引。所以在vec4 pos中; POS [2] 指pos的第三元件和 相当于pos.z [GLSL规格1.20.8,5.5矢量成分]

另外数组下标可以是使用用于访问矩阵colums:

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

谢谢。这真的有助于我在这里开玩笑。 – 2010-11-10 00:31:16

1

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