OpenGL ES:纹理的顶点数

时间:2010-12-05 14:18:21

标签: opengl-es

假设我们要渲染一个立方体。要绘制几何体,我们只需要8个顶点。如果我们需要映射纹理,我们需要24个顶点,即我们必须提交冗余顶点吗?

感谢名单

2 个答案:

答案 0 :(得分:1)

由于这些顶点具有不同的属性,因此它们不相同。所以,是的,一些数据可能是多余的,但不是全部。通常在面之间共享顶点时可以使用索引几何,但在这种情况下,它们并不真正共享。

OpenGL提供顶点数组功能,可用于将顶点数据位分离为独立的块。假设您可以在一个连续的数组中使用坐标,在另一个数组中使用颜色,在第三个中使用纹理坐标。顶点数据不必交错。请参阅glVertexPointerglColorPointerglTexCoordPointer

使用顶点数组可以通过共享一些顶点数据来节省一些内存,但这需要进行许多绘制调用,对于这个简单的立方体情况而言,这是不值得的。 This article可能非常有用,请查看。

答案 1 :(得分:1)

我为iPhone here提供了索引的纹理多维数据集的代码,如果您想要查看此操作的示例。即使你不在iPhone上,也可能有助于说明索引如何减少像这样的对象的几何尺寸。代码的OpenGL ES部分应该很好地转换到其他平台。

指数可以阻止冗余几何体的上传(其大小可能是移动GPU的限制因素),而iOS设备中的GPU则针对索引三角形条带进行了优化。当使用索引缩小几何体的大小时,我观察到了一些显着的性能提升。