Optimization 无重复顶点的OpenGL纹理映射

Optimization 无重复顶点的OpenGL纹理映射,optimization,opengl-es,duplicates,texture-mapping,vertex,Optimization,Opengl Es,Duplicates,Texture Mapping,Vertex,我已经使用OpenGL有一段时间了,现在我正在对我的应用程序的各个方面进行优化 问题是:在某些情况下,我最终会为纹理贴图复制垂直。我经常使用这本书: 您可以转到第70-71页,查看问题和建议的解决方案。基本上,它说,当一个顶点需要为不同的面使用不同的纹理坐标时,你必须复制该顶点。 这是唯一的解决办法 但我犹豫了——是吗?对于顶点,很多UV贴图都会有坐标被稍微分开的情况。也就是说,顶点最终会有不同的坐标。复制它们似乎是一种巨大的浪费 有没有另一种方法呢?顶点不仅仅是一个位置。顶点是位置、颜色、纹

我已经使用OpenGL有一段时间了,现在我正在对我的应用程序的各个方面进行优化

问题是:在某些情况下,我最终会为纹理贴图复制垂直。我经常使用这本书:

您可以转到第70-71页,查看问题和建议的解决方案。基本上,它说,当一个顶点需要为不同的面使用不同的纹理坐标时,你必须复制该顶点。 这是唯一的解决办法

但我犹豫了——是吗?对于顶点,很多UV贴图都会有坐标被稍微分开的情况。也就是说,顶点最终会有不同的坐标。复制它们似乎是一种巨大的浪费


有没有另一种方法呢?

顶点不仅仅是一个位置。顶点是位置、颜色、纹理坐标和其他属性的整个向量

但我犹豫了——是吗

是的。这也是实现这一点最有效的方法,因为它允许更轻松的缓存

有没有别的办法

您可以对每个属性使用不同的数组,然后将一个主索引数组寻址到二级索引数组中,每个属性一个,然后对每个属性执行查找

两个间接和很少的缓存一致性。总的来说,二级索引数组的开销将比“几个”重复位置顶点的小开销消耗更多内存。你在避免双重间接

总的来说,某些重复顶点位置的方式也是最有效的方式