2010-11-10 3 views
3

Que fait l'opérateur [] lorsqu'il adresse un attribut vec4?Question sur l'attribut 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]); 
} 

Est-ce adresse les différents champs de la vec4 (.x, .y, .z .w) ou est-ce la traite en quelque sorte vec4 et un tableau de vec4 et faire autre chose?

Répondre

4

Oui, c'est pour accéder à des champs individuels.

tableau syntaxe subscripting peut également être appliquée à des vecteurs pour fournir l'indexation numérique. Donc, dans vec4 pos; pos [2] se réfère au troisième élément de pos et est équivalente à pos.z [GLSL spec 1.20.8, 5.5 Composants Vector]

tableau également indiçage peut être utilisé pour accéder à colonnes de matrices:

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

Merci. Cela aide vraiment sur ce que je veux dire ici. –

1

Oui, il indexe les composants x/y/z/w.