我的WebGl代码存在以下问题。
ERROR:
WebGL: INVALID_VALUE: getAttribLocation: no object or object deleted
我的绘画功能:
function drawScene () {
vertexPositionAttribute = gl.getAttribLocation(glProgram, "aVertexPosition");
gl.enableVertexAttribArray(vertexPositionAttribute);
gl.bindBuffer(gl.ARRAY_BUFFER, trianglesVerticeBuffer);
gl.vertexAttribPointer(vertexPositionAttribute, 3, gl.FLOAT, false, 0, 0);
gl.drawArrays(gl.TRIANGLES, 0, 6);
}
我的着色器,已加载,创建并附加到程序中,没有任何问题。我链接并使用了该程序。但仍然找不到我的错误。
顶点:
attribute vec3 aVertexPosition;
void main(void) {
gl_Position = vec4(aVertexPosition, 1.0);
}
片段:
void main(void) {
gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
}
感谢您的帮助
答案 0 :(得分:1)
问题是您在initShaders()
创建glProgram
之前尝试绘制场景。请记住,您是异步下载着色器文件,因此在着色器下载之前,您的drawScene()
函数正在运行。
要修复此更改loadFile()
函数中的以下行,以便它执行同步请求,如下所示:
request.open('GET', url, false);
Here是指向代码的工作版本的链接。