molehill着色器
-
12-11-2019 - |
题
我正在尝试了解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。
cheers
解决方案
生成的gentacicetagcode矩阵为4x4 floats,它需要4寄存器,因为每个寄存器是128bits(4浮点),所以必须将旋转矩阵加载到Vc4寄存器中:
.
"m44 vt0, va0, vc0\n" +
"mul op, vt0, vc4\n";
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, scaleMatrix);
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 4, rotationMatrix);
. 不隶属于 StackOverflow