Opengl es OpenGL ES:纹理的顶点数

Opengl es OpenGL ES:纹理的顶点数,opengl-es,Opengl Es,假设我们要渲染一个立方体。要绘制几何体,我们只需要8个顶点。如果我们需要映射纹理,我们需要24个顶点,即我们必须提交冗余顶点,这是真的吗 Thanx由于这些顶点具有不同的属性,因此它们并不相同。因此,是的,有些数据可能是多余的,但不是全部。通常,当顶点在面之间共享时,可以使用索引几何体,但在这种情况下,它们并不是真正共享的 OpenGL提供了顶点数组功能,可用于将顶点数据位分离为独立的块。假设你可以在一个连续的数组中有坐标,在另一个数组中有颜色,在第三个数组中有纹理坐标。顶点数据不必交错。请参见

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


Thanx

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

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


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

我为iPhone提供了一个索引、纹理立方体的代码,如果您希望看到这方面的示例的话。即使您不在iPhone上,它也可能有助于说明索引如何减少此类对象的几何体大小。OpenGL ES部分代码应该能够很好地翻译到其他平台


索引可以防止上传冗余几何体(其大小可能是移动GPU的一个限制因素),并且像iOS设备中的GPU一样,针对索引三角形条带进行了优化。在使用索引缩小几何体的大小时,我发现了一些显著的性能优势。

您知道索引几何体在哪种情况下会有回报吗?如果我理解正确,在一种情况下,你有一个面之间共享的顶点,这样的顶点必须用不同的纹理数据重新提交。我编辑了答案,请检查。索引几何体在具有真正共享的顶点时有效,例如面片或简单四边形中的顶点,它们描述的是一个曲面。@Al-iPhone等设备的GPU经过优化,可使用索引三角形条,如果您在这些GPU上受到几何结构的限制,那么使用索引确实可以显著提高性能。