【发布时间】:2018-04-16 05:40:57
【问题描述】:
注意:一般问题之前已经问过,但这种错误似乎真的取决于具体情况。如果这确实是重复的,请道歉
尽管检查了很多东西,但属性 a_Morph_0 出现“超出范围”错误:
- 属性存在于着色器中
- 我正在使用 VAO,并尝试释放它(设置为 null)
- 管道可以很好地处理其他数据
- 我之前遇到过这个错误,我只是通过从 fragment 着色器上切掉一些东西来解决这个问题,但这一次没有帮助
- 切换
a_Position和a_Morph_0的顺序会相应地更改错误,即它仍然引用 a_Morph_0。
顶点着色器代码:
attribute vec4 a_Position;
attribute vec4 a_Morph_0;
attribute vec4 a_Morph_1;
uniform float u_MorphWeights[2];
uniform mat4 u_MVPMatrix;
uniform mat4 u_ModelMatrix;
void main() {
vec4 m_Position = a_Position;
m_Position += (u_MorphWeights[0] * a_Morph_0);
m_Position += (u_MorphWeights[1] * a_Morph_1);
gl_Position = u_MVPMatrix * m_Position;
}
一些相关数据:
-
elements的数据:Uint16Array(3) [0, 1, 2] - 属性
a_Position的数据:Float32Array(9) [0, 0, 0, 1, 0, 0, 0.5, 0.5, 0] - 属性
a_Morph_0的数据:Float32Array(9) [0, 0, 0, 0, 0, 0, -1, 1, 0] - 属性
a_Morph_1的数据:Float32Array(9) [0, 0, 0, 0, 0, 0, 1, 1, 0]
draw call 的计数为 3。具体来说:
gl.drawElements(4, 3, 5123, 0);
Spector 截图:
还有什么我应该检查的吗?
【问题讨论】:
-
"元素数据:Uint16Array(3) [0, 1, 2]"
标签: webgl