0

このエラーがあります

Error: Error #3661: AGAL validation failed: Temporary register index out of bounds for source operand 2 at token 5 of vertex program.

このGLSLを変換しようとすると:

attribute vec3 aVertexPosition;

    uniform mat4 uMVMatrix;
    uniform mat4 uPMatrix;

    void main(void) {
        gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);
    }

このコードに:

mov vt0.w, vc0.x
mov vt0.xyz, va0.xyz

mov vt1.xyzw, vc1
mul vt5.xyzw, vt1, vc5
m44 op.xyzw, vt0.xyzw, vt5

どうすればこれを解決できますか? なにか提案を?ありがとう!!!

4

1 に答える 1

1

テンポラリ レジスタは vt0 ~ vt7 の 8 つだけです。vt5 に 4x4 マトリックスを格納しようとしていますが、その後に 2 つのレジスタしかありません。十分なスペースがありません。

vt1 を使用して、行列を格納し、行列の乗算の内容を受け取ることをお勧めします。

mov vt0.w, vc0.x
mov vt0.xyz, va0.xyz

mov vt1, vc1
mul vt1, vt1, vc5
m44 op, vt0, vt1

唯一の問題は、mul は真の行列乗算を行わず、代わりに成分ごとの乗算を行い、m44 は 4x4 行列と 4 成分ベクトルの間の乗算を行うと思うことです。私が読んだことから、agal で 2 つの行列を乗算する方法がわかりません。アクションスクリプトで行列乗算を行う必要がある場合があります。何が起こるか教えてください!

于 2013-02-24T17:59:03.703 に答える