1

Matrix3DオブジェクトがAS3の頂点定数レジスタとしてContext3Dオブジェクトに渡される例を主に見てきました。しかし、他のタイプのレジスタ(一時または属性)で行列を見たことはありません。

Matrix頂点定数を一時レジスタにコピーしてから、他の指定された値(頂点属性または他の定数)を使用して、そのMatrix一時レジスタの個々のフィールド(例:回転用)を操作する方法はありますか?

簡単なmov dest, source操作でうまくいくでしょうか?

4

2 に答える 2

2

はい、それは機能します(Moleから取得してください:))。十分な数(3または4)のレジスタをコピーしてください。また、行列演算について考える良い方法は、それらが3または4ドットの積命令の単なるショートカットであるということです。AGALには実際には何も入力されていません。マトリックスは、いくつかの連続したレジスタです。マトリックスアップロード機能は、1回の呼び出しで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

一時的なレジスターにもマトリックスが含まれていることはほぼ確実であり、要求は可能ですが、MarcoScabiaのような人から最良の回答を得ることができます。

http://iflash3d.com/

彼は非常に親しみやすく、AGALに精通しています。

于 2012-01-24T18:40:51.937 に答える