javascript - Webgl bindBufer 和 vertexAttribPointer 是否取决于缓冲区大小?

标签 javascript webgl

bindBuffer 操作是否取决于绑定(bind)缓冲区大小?例如,我有一个要绘制的索引数组,还有一些顶点缓冲区(我的顶点源),例如,第一个是 100 个顶点,第二个是 10000000 个顶点缓冲区(所有已创建的缓冲区)。问题是更改(或绑定(bind))顶点缓冲区是否取决于它们的大小? Ofcource 渲染和创建缓冲区取决于缓冲区大小,但为了精炼,我只对 bindBuffer 操作性能感兴趣。 感谢您的任何建议。

请不要指出绑定(bind)的含义顺序,我只关注性能:

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);

最佳答案

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

关于javascript - Webgl bindBufer 和 vertexAttribPointer 是否取决于缓冲区大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41957844/

相关文章:

javascript - 单击下一个菜单项时防止向下滑动的子菜单向上滑动

javascript - 为什么下面的代码会得到不同的结果?

javascript - 在球体上使用多个纹理 [Three.js]

opengl-es - 我应该学习什么语言来准备 WebGL?

opengl-es - 在WebGL2中使用drawBuffers时遇到一些问题

javascript - 纯 WebGL 虚线

android - 在 Chrome 和 Android 上呈现问题

javascript - 显示带有复选框的 jquery <div>

javascript - 如何仅在 fullpage.js 中禁用鼠标滚动触发器

javascript - Angular 2如何将对象数组放入另一个对象数组