8

OpenGL ES 编程指南讨论了您应该避免未对齐的顶点数据,并给出了将数据对齐到 4 字节块的示例。

OpenGL ES 编程指南

未对齐与对齐的顶点数据

然而,在我在网上找到的大多数演示材料和教程中,我没有看到有人这样做。以下示例来自 71 Squared 上的演示项目:

static const SSTexturedVertexData3D EnemyFighterVertexData[] = {
    {/*v:*/{1.987003, -0.692074, -1.720503}, /*n:*/{0.946379, -0.165685, -0.277261}, /*t:*/{0.972816, 0.024320}},

你会怎么做呢?在 v 和 n 中添加一个虚拟 0.0,在 t 中添加 2 个?

我的猜测是,如果您只为每个应用程序加载一次顶点数据,那并不重要,但如果您在每个渲染帧上绑定和重新绑定到不同的数组,那就很重要了。我的计划是将我所有的数组组合成一个,但我很好奇。

4

1 回答 1

2

一般一个顶点是由floats哪些要对齐的,所以你不需要太在意。事实上,很多书籍使用普通struct的 s 来保存顶点数据,由于填充问题,这些顶点数据不能保证是连续的,但如果你只有浮点数,那很好,因为你不太可能有填充。当然,有些人(包括我自己)更喜欢使用vectorC++ 中的 STL,但如果你在 iOS 上,虽然你可以使用 C++,但你可能正在使用 Objective-C,因此非结构方式的连续性将涉及普通的 C 数组,它们是一起工作不是那么有趣。

如果您创建自定义结构来保存顶点数据以及可绘制对象的其他数据,并且使用shorts 或其他类型,您可能会发现填充成为问题。但是如果你只坚持floats 你会没事的,而且你会相处得很好,因为大多数关于 OpenGL 的教育资源都是这样做的。

于 2013-10-08T08:01:23.020 回答