为什么在Android的OpenGL中使用索引缓冲区来绘制立方体

时间:2013-07-16 23:11:34

标签: android opengl-es

我无法使用索引缓冲区纹理我的多维数据集。我看到一篇文章说你需要在你的立方体中定义24个顶​​点,而不是只有8个顶点(其中1个顶点是3个浮点数)。

如果必须传输如此多的重复数据,那么使用索引缓冲区有什么意义呢?

OpenGL ES - texture map all faces of an 8 vertex cube?

1 个答案:

答案 0 :(得分:1)

顶点 3个浮点数;这就是答案所说的原因。顶点是输出图元的单个顶点所需的所有数据。这包括位置(3个浮点数),但包括您感兴趣的任何纹理坐标,法线,每顶点颜色或其他顶点属性。

索引缓冲区的目的是不必重复那么多的数据。每个面具有4个独立顶点,但每个面也是2个三角形,它们共享2个顶点。如果您没有使用索引渲染,那么您需要将每个面部表示为单独的GL_TRIANGLE_STRIP绘制调用(因此绘制完整立方体需要6个单独的绘制调用),或者您必须为每个面提供6个顶点,其中2顶点是再次复制的完全相同的顶点数据。