Webgl 付款人使用

Webgl 付款人使用,webgl,Webgl,我在WebGL中创建了一个小应用程序,我有两个移动的对象,一个立方体和一个球体。 我用着色器修改对象,每个对象都有它的着色器。因此,我希望在确定时间更新显示器上的对象,为此,我使用drawerelements函数 对于每个对象,我都有一个缓冲区,其中包含顶点缓冲区中面的索引: gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Arra

我在WebGL中创建了一个小应用程序,我有两个移动的对象,一个立方体和一个球体。 我用着色器修改对象,每个对象都有它的着色器。因此,我希望在确定时间更新显示器上的对象,为此,我使用
drawerelements
函数

对于每个对象,我都有一个缓冲区,其中包含顶点缓冲区中面的索引:

gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer);
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indices), gl.STREAM_DRAW);
indexCount = indices.length;
索引是一个数组,其中包含每个面的索引值。(每个面有3个值,我们使用三角形)

因此,在此之后,对于绘制对象的三角形,我会:

gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer);
gl.drawElements(gl.TRIANGLES, indexCount, gl.UNSIGNED_SHORT, 0);
但我在屏幕上什么都没有,我有一个警告:

WebGL:无效的\u操作:抽屉元素:属性未正确设置

我的错误可能是什么


谢谢

我想您错过了将javascript顶点缓冲区链接到DrainElements()之前着色器属性的代码

e、 g:


感谢您的回复,我添加了
gl.vertexattributepointer(shaderMaterial.attributes.aPosition,3,gl.FLOAT,false,0,0)gl.bindBuffer(gl.ARRAY_BUFFER, meshVertexPositionBuffer); 
gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute, 
                     meshVertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0); 
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, meshIndexBuffer);
gl.drawElements(gl.TRIANGLES, meshIndexBuffer.numberOfItems, gl.UNSIGNED_SHORT, 0);