1

我经常看到将Matrix3D对象作为 AS3 中的顶点常量寄存器传递给Context3D对象的示例。但从未在任何其他类型的寄存器(临时属性)中看到矩阵。

是否有任何方法可以将 Matrix 顶点常量复制到临时寄存器,然后使用其他提供的值(顶点属性或其他常量)操作该 Matrix 临时寄存器的各个字段(例如:用于旋转)?

一个简单的mov dest, source操作可以解决问题吗?

4

2 回答 2

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等。

于 2012-02-01T05:58:09.507 回答
0

我几乎可以肯定临时寄存器也包含矩阵并且您的请求是可能的,但您可能会从像 Marco Scabia 这样的人那里得到最佳答案:

http://iFlash3d.com/

他对 AGAL 非常平易近人且知识渊博。

于 2012-01-24T18:40:51.937 回答