首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误#3661: AGAL验证失败:临时寄存器索引超出界限

错误#3661: AGAL验证失败:临时寄存器索引超出界限
EN

Stack Overflow用户
提问于 2013-02-24 20:55:40
回答 1查看 310关注 0票数 0

我有这个错误

代码语言:javascript
复制
Error: Error #3661: AGAL validation failed: Temporary register index out of bounds for source operand 2 at token 5 of vertex program.

尝试转换此GLSL时:

代码语言:javascript
复制
attribute vec3 aVertexPosition;

    uniform mat4 uMVMatrix;
    uniform mat4 uPMatrix;

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

这段代码:

代码语言:javascript
复制
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

我该如何解决这个问题呢?有什么建议吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-25 01:59:04

只有8个临时寄存器vt0 - vt7。您正尝试在vt5中存储一个4x4矩阵,但它后面只有两个寄存器:没有足够的空间。

我建议您使用vt1来存储矩阵和接收矩阵乘法的内容:

代码语言:javascript
复制
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中将两个矩阵相乘。您可能需要在actionscript中执行矩阵乘法。让我知道发生了什么!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15051920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档