如何移动这样的计算:
var a : Matrix3D = ...
var b : Matrix3D = ...
a.append( b );在着色器中?
我目前的方法是:
setProgramConstantsFromMatrix( VERTEX, 0, a, true );
setProgramConstantsFromMatrix( VERTEX, 4, b, true );
"mov vt0, vc0\n" +
"mov vt1, vc1\n" +
"mov vt2, vc2\n" +
"mov vt3, vc3\n" +
"m44 vt4, vc4, vt0\n"在vt4中产生错误的结果。我做错了什么?
发布于 2014-01-28 17:56:16
在着色器中,你不需要指定vt1,2和3。着色器将“知道”它正在被发送一个矩阵,并自动加载以下3个寄存器(总共4个寄存器)和所需的详细信息。自己加载可能会导致不可预知的结果。
还要注意,应用matrix3D乘法的顺序很重要。在AS3中还有一个预置方法,它将matrix3D参数放在乘法运算的右侧。append方法将matrix3D参数放在乘法运算的左侧。然后,您可能需要颠倒应用m44的顺序。也就是说,你可以将vt1设置为b,然后将(m44)乘以a。
https://stackoverflow.com/questions/21396176
复制相似问题