WebGL-GetAttriblLocation:无对象,着色器问题

WebGL-GetAttriblLocation:无对象,着色器问题,webgl,shader,Webgl,Shader,我的WebGl代码有以下问题 ERROR: WebGL: INVALID_VALUE: getAttribLocation: no object or object deleted 我的绘图功能: function drawScene () { vertexPositionAttribute = gl.getAttribLocation(glProgram, "aVertexPosition"); gl.enableVertexAttribArray(vertexPositi

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

感谢您的帮助

问题是您试图在
initShaders()
完成创建
glProgram
之前绘制场景。请记住,您正在异步下载着色器文件,因此您的
drawsecene()

要修复此更改,请在
loadFile()
函数中执行以下行,以便执行如下同步请求:

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

是指向代码工作版本的链接。

问题在于,您试图在
initShaders()
完成创建
glProgram
之前绘制场景。请记住,您正在异步下载着色器文件,因此您的
drawsecene()

要修复此更改,请在
loadFile()
函数中执行以下行,以便执行如下同步请求:

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

是指向代码工作版本的链接。

您能创建一个JSFIDLE吗?如果没有其余的代码,很难知道。着色器丢失。剩下的你在那里找到了你能做一个jsFiddle吗?如果没有其余的代码,很难知道。着色器丢失。你可以在那里找到其余的