我正在开发一个小游戏(使用 OS X Lion、Xcode 4、Objective-C / C++、Cocoa、OpenGL)。这是一个相当简单的概念。我有一些在二维数组中移动的对象。现在我想为我的游戏编写一个 OpenGL GUI。
我所做的是遍历我的数组并为其中的每个对象绘制一个立方体,在其特定位置,其纹理取决于对象的类型。当然,我的第一个简单实现有点 CPU 密集型,所以下一步是实现纹理图集。由于我有很多顶点,还有很大的改进空间。
我读到 VBO 和 DisplayLists 要快得多。我完成了一些教程,但我仍然有很多关于在真实动态游戏环境中实现的问题。
假设我为我的游戏对象编译了一些显示列表。如果我想把它放在一个特定的位置,我必须 glTranslatef()。但是很多 glTranslatef() 可能会占用大量 CPU。我该如何处理?当然,我可以在每个可能的位置为每种游戏对象创建一个显示列表,但这似乎不切实际,而且它只会起作用,因为我的游戏是基于图块的......
VBO似乎也遇到了同样的问题。当然(至少根据我的理解)我可以创建一个完整的顶点网格,然后遍历我的数组并为每个对象渲染一个与对象位置相关联的顶点立方体。但我不明白如何将纹理从整个顶点网格应用于特定立方体。我是否必须为网格内的每个立方体面创建纹理坐标,还是为立方体的所有 6 个面创建纹理坐标就足够了?