【问题标题】:OpenGL texture mapping without duplicate vertices没有重复顶点的OpenGL纹理映射
【发布时间】:2020-05-15 22:06:20
【问题描述】:

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

这就是问题所在:在某些情况下,我最终会为纹理映射复制顶点。我一直在使用这本书: http://staff.fit.ac.cy/eng.ap/FALL2017/3d-game-development-with-lwjgl.pdf

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

但我犹豫了——是吗?许多 UV 贴图会出现坐标被切开一点的情况,例如顶点。 IE。顶点最终具有不同的坐标。复制它们似乎是一种巨大的浪费。

有没有办法换一种方式?

【问题讨论】:

    标签: optimization opengl-es duplicates texture-mapping vertex


    【解决方案1】:

    顶点不仅仅是一个位置。顶点是位置、颜色、纹理坐标以及您要放入其中的任何其他属性的整个向量。

    但我犹豫了——是吗?

    是的。这也是执行此操作的最有效方式,因为这样可以更轻松地进行缓存。

    有没有办法换一种方式?

    您可以为每个属性使用不同的数组,然后有一个主索引数组来寻址到辅助索引数组,每个属性一个,然后对每个属性进行查找。

    两个间接和很少的缓存一致性。总体而言,二级索引数组的开销将消耗更多的内存,而不是“少数”重复位置顶点的小开销。而且您正在避免双重间接。

    总的来说,一些重复顶点位置的方式也是性能最好的。

    【讨论】:

      猜你喜欢
      • 2014-12-14
      • 2014-04-23
      • 2012-04-16
      • 1970-01-01
      • 2011-05-04
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多