我经常看到 Matrix3D 对象作为AS3中的顶点常量寄存器传递给 Context3D 对象的示例。但从未在任何其他类型的寄存器中看到过矩阵( 临时 或 属性 )。
是否有办法将Matrix顶点常量复制到临时寄存器,然后使用其他提供的值(顶点属性或其他常量)操作该Matrix临时寄存器的单个字段(例如:用于旋转)? / p>
一个简单的mov dest, source
操作可以解决这个问题吗?
答案 0 :(得分:2)
是的,有效(从鼹鼠拿:)。只需确保复制足够的(3或4)寄存器。考虑矩阵运算的一个好方法是它们只是3或4点产品指令的快捷方式。在AGAL中实际上没有任何类型,矩阵只是几个连续的寄存器。矩阵上传功能仅便于在一次通话中上传到4个寄存器。并在着色器中
m44 dest, src, srcmatrix
与:
完全相同dp4 dest.x srx, srcmatrix
dp4 dest.y srx, srcmatrix+1
dp4 dest.z srx, srcmatrix+2
dp4 dest.w srx, srcmatrix+3
这里的+1等意味着注册号+1等。
答案 1 :(得分:0)