3

我正在尝试了解 molehill 并希望将一个顶点与两个矩阵相乘,例如:

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 浮点数,它需要 4 个寄存器,因为每个寄存器都是 128 位(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 回答