bad*_*sel 8 iphone 3d ipad ios opengl-es-2.0
OpenGL ES编程指南讨论了应避免错位的顶点数据,并给出了将数据与4字节块对齐的示例.

然而,在我发现的大多数演示材料和教程中,我没有看到有人这样做.以下示例来自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}},
Run Code Online (Sandbox Code Playgroud)
你怎么会这样做?在v中添加一个虚拟0.0,在t中添加n和2个虚拟?
我的猜测是,如果你只是每个应用程序加载一次顶点数据,那就没那么重要了,但是如果你绑定并重新绑定到每个渲染帧上的不同数组就很重要了.我的计划是将我的所有阵列组合成一个,但我很好奇.
小智 2
一般来说,顶点是由floats要对齐的顶点组成的,因此您无需太担心这一点。事实上,很多书都使用普通的structs 来保存顶点数据,由于填充问题,不能保证顶点数据是连续的,但如果你拥有的只是浮点数,那也没关系,因为你不太可能有填充。当然,有些人(包括我自己)更喜欢使用vectorC++ 中的 STL,但如果你在 iOS 上,虽然你可以使用 C++,但你可能正在使用 Objective-C,因此非结构体方式的连续性将涉及普通的 C 数组,这些数组是合作起来不太有趣。
如果您创建自定义结构来保存可绘制对象的顶点数据以及其他数据,并且使用shorts 或其他类型,您可能会发现填充成为问题。但如果你只坚持使用floats ,你会没事的,而且你会和很多人在一起,因为大多数关于 OpenGL 的教育资源都是这样做的。
| 归档时间: |
|
| 查看次数: |
1589 次 |
| 最近记录: |