3 index buffers问一个更难的问题,但我觉得他们的主要问题归结为我的:有没有办法使用索引缓冲区在WebGL中多次访问同一个顶点而不是复制顶点?
我能找到的只是使用索引缓冲区将纹理,法线等与模型中的顶点相关联.我无法找到一种方法来使用索引缓冲区来告诉drawArrays访问位置数组中顶点的顺序.
解决方法:
是的,使用gl.drawElements并将带有顶点索引的缓冲区上传到gl.ELEMENT_ARRAY_BUFFER.
... upload vertex data to buffers, vertexAttribPointer them.
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indicesBuffer);
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indicesData, gl.STATIC_DRAW);
gl.drawElements(gl.TRIANGLES, indicesData.length/3, gl.UNSIGNED_SHORT, 0);
有关完整示例,请参见https://developer.mozilla.org/en/WebGL/Creating_3D_objects_using_WebGL.