質問

私はモリーヒルを理解しようとしていて、2つの行列によって複数の頂点を望んでいます、言う:

output = theVertex * scaleMatrix * rotationMatrix
.

私の頂点シェーダを推測するim:

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

と私はで行列を設定します

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

しかしそれはうまくいきません。私は何を間違っていますか?

シェーダを入れる前に私がマトリックスを複数行動させることができることを認識していますが、Agalを理解しようとしています。

歓声

役に立ちましたか?

解決

m44マトリックスは4×4 floatsで、各レジスタは128ビット(4 floats)であるため、が4レジスタを取ります。これにより、回転行列をVC4レジスタにロードする必要があります。

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


context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, scaleMatrix);
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 4, rotationMatrix);
.
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top