Pergunta

Estou tentando entender bastante modesta e gostaria de múltiplos de um vértice por duas matrizes, dizer:

output = theVertex * scaleMatrix * rotationMatrix

Eu estou supondo meu vertex shader ficaria algo como:

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

E eu gostaria de definir as matrizes com

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

Mas não o seu trabalho.O que estou fazendo de errado?

Eu estou ciente de que eu poderia vários matriz antes de colocar o shader, mas estou tentando entender AGAL.

Cheers

Foi útil?

Solução

Um m44 matriz 4x4 flutua, ele leva de 4 registradores como cada registrador é 128bits (4 floats) então você tem que carregar a sua matriz de rotação em vc4 registo:

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

context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, scaleMatrix);
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 4, rotationMatrix);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top