Webgl bindBufer和vertexAttribPointer是否依赖于缓冲区大小?

时间:2017-01-31 12:38:59

标签: javascript webgl

bindBuffer操作是否依赖于绑定的缓冲区大小?例如,我有一个我想要绘制的索引数组,我也有一些顶点缓冲区(我的顶点的源)首先是100个顶点,第二个是10000000个顶点缓冲区(已经创建的缓冲区)。问题是更改(或绑定)顶点缓冲区取决于它们的大小? Ofcource渲染和创建缓冲区取决于缓冲区大小,但为了改进,我只关注bindBuffer操作性能。 感谢您的任何建议。

请不要指出绑定的意义顺序,我只是在性能上重复:

gl.bindBuffer(gl.ARRAY_BUFFER, coordinatesBuffer0);
gl.vertexAttribPointer(sha.coordinates._pName, coordinatesBuffer.itemSize, gl.FLOAT, false, 0, 0);

gl.bindBuffer(gl.ARRAY_BUFFER, coordinatesBuffer1);
gl.vertexAttribPointer(sha.coordinates._pName, coordinatesBuffer.itemSize, gl.FLOAT, false, 0, 0);

gl.bindBuffer(gl.ARRAY_BUFFER, coordinatesBuffer3);
gl.vertexAttribPointer(sha.coordinates._pName, coordinatesBuffer.itemSize, gl.FLOAT, false, 0, 0);

等。等等和某处

this.gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer);
this.gl.drawElements(gl.TRIANGLES, indexBuffer.numItems, this.gl.UNSIGNED_SHORT, 0);

1 个答案:

答案 0 :(得分:0)

bindBuffer只是将内部指针设置为给定缓冲区的地址,它与缓冲区大小无关。