Javascript WebGL抽屉元素超出范围?

Javascript WebGL抽屉元素超出范围?,javascript,webgl,Javascript,Webgl,我正在尝试学习WebGL,因此我从WebGL教程中获取了一些代码,并尝试添加我自己的行,但每当我运行它时,它都会给我以下错误: .WebGLRenderingContext: GL ERROR :GL_INVALID_OPERATION : glDrawElements: attempt to access out of range vertices in attribute 0 注意:属性0是我的顶点缓冲区 我的缓冲区初始化代码是(如果没有定义,则显然假定为全局变量) 这是我的绘图代码 /

我正在尝试学习WebGL,因此我从WebGL教程中获取了一些代码,并尝试添加我自己的行,但每当我运行它时,它都会给我以下错误:

.WebGLRenderingContext: GL ERROR :GL_INVALID_OPERATION : glDrawElements: attempt to access out of range vertices in attribute 0 
注意:属性0是我的顶点缓冲区

我的缓冲区初始化代码是(如果没有定义,则显然假定为全局变量)

这是我的绘图代码

// set up perspective and stuff
    gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexPositionBuffer);
gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute,
        cubeVertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0);

gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexColorBuffer);
gl.vertexAttribPointer(shaderProgram.vertexColorAttribute,
        cubeVertexColorBuffer.itemSize, gl.FLOAT, false, 0, 0);

gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVertexIndexBuffer);

gl.uniformMatrix4fv(shaderProgram.pMatrixUniform, false, pMatrix); // perspective matrix
gl.uniformMatrix4fv(shaderProgram.mvMatrixUniform, false, mvMatrix); // model view matrix

gl.lineWidth(1.0);
gl.drawElements(gl.LINES, cubeVertexIndexBuffer.numItems,
        gl.UNSIGNED_SHORT, 0);

事实上我知道了。作为WebGL新手,我设法忘记了在颜色缓冲区中为每个顶点添加索引。我从来没有想到着色器要求每个顶点都有一种颜色。(如果WebGL说这是属性1(我的颜色属性)而不是属性0(我的顶点位置属性)中的错误,那就太好了。)

如果您在中分配的缓冲区数据:

gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(
    cubeVertexIndices), gl.STATIC_DRAW);
太短(请参见第二个参数)

如果顶点的创建是以编程方式进行的,则可能会发生这种情况。至少,我就是这样做的

gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(
    cubeVertexIndices), gl.STATIC_DRAW);