1

我的 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);
}

感谢帮助

4

1 回答 1

1

问题是您正在尝试在initShaders()完成创建glProgram. 请记住,您正在异步下载着色器文件,因此您的drawScene()函数甚至在着色器下载之前就已运行。

要解决此问题,请更改loadFile()函数中的以下行,以便它执行如下同步请求:

request.open('GET', url, false);

是您的代码的工作版本的链接。

于 2013-02-18T23:57:30.150 回答