Question

J'essaie de comprendre la taupe et j'aimerais multiple un sommet par deux matrices, disons:

output = theVertex * scaleMatrix * rotationMatrix

Je suppose que mon vertex shader ressemblerait à quelque chose comme:

"m44 vt0, va0, vc0\n" +
"mul op, vt0, vc1\n";

Et je définirais les matrices avec

context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, scaleMatrix);
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 1, rotationMatrix);

Mais ça ne marche pas. Qu'est-ce que je fais mal?

Je suis conscient que je pouvais multiples la matrice avant de mettre le shader, mais j'essaie de comprendre Agal.

Acclamations

Était-ce utile?

La solution

UN m44 La matrice est 4x4 flottants, il prend 4 registres Comme chaque registre est 128bits (4 flotteurs), vous devez donc charger votre matrice de rotation dans le registre VC4:

"m44 vt0, va0, vc0\n" +
"mul op, vt0, vc4\n";

context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, scaleMatrix);
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 4, rotationMatrix);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top