我见过的大多数例子都是 三维矩阵 对象作为 AS3 中的顶点常量寄存器传递给 上下文3D 目的。但从未在任何其他类型的寄存器中见过矩阵(暂时的 或者 属性).

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

可以简单的 mov dest, source 操作有窍门吗?

有帮助吗?

解决方案

是的,这有效(从鼹鼠那里得到它:))。只需确保复制足够的(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等。

其他提示

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

http://ilash3d.com/

他非常平易近人,并且对 AGAL 非常了解。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top