3

私はモグラヒルを理解しようとしていますが、頂点を2つの行列で乗算したいと思います。

output = theVertex * scaleMatrix * rotationMatrix

私の頂点シェーダーは次のようになります。

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

そして、私は行列を設定します

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

しかし、それは機能していません。私は何が間違っているのですか?

シェーダーを配置する前にマトリックスを複数化できることを認識していますが、AGALを理解しようとしています。

乾杯

4

1 に答える 1

4

m44行列は 4x4 float です。各レジスタは 128 ビット (4 float) であるため、4 つのレジスタが必要になるため、回転行列を vc4 レジスタにロードする必要があります。

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

context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, scaleMatrix);
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 4, rotationMatrix);
于 2011-03-28T07:19:54.127 に答える