【发布时间】:2013-12-03 03:37:00
【问题描述】:
我只是想了解 VBO 和 IBO 如何在 WEBGL 中工作。 以下是我的理解: IBO 有助于减少传递给 GPU 的信息量。所以我们有一个 VBO,然后我们创建一个 IBO,其索引指向 VBO。我怀疑 WEBGL 如何知道 IBO VBO 映射。在单个 VBO/IBO 的情况下,我认为 GL 是一个状态机,它会看到它绑定到的最后一个 ARRAY_BUFFER,然后将该缓冲区用作 IBO 目标。以下是多个 VBO(位置缓冲区和颜色缓冲区)的情况如下所示:
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);
setMatrixUniforms();
gl.drawElements(gl.TRIANGLES, cubeVertexIndexBuffer.numItems, gl.UNSIGNED_SHORT, 0);
在上面的代码中(有效 - 我从教程中获取),我们有两个 VBO 和一个 IBO (cubeVertexIndexBuffer),我不明白 WEBGL 如何知道 IBO 的索引指向位置缓冲区而不是颜色缓冲区(尽管颜色缓冲区是最后一个绑定的 ARRAY_BUFFER)。
请让我知道我在这里缺少什么......
【问题讨论】:
标签: opengl-es opengl-es-2.0 webgl