【发布时间】:2013-01-21 06:53:27
【问题描述】:
我对 OpenGL ES 2.0 有点困惑,我找不到有关处理 2D 平铺的正确过程的任何权威信息(或者我有但我不明白)。
简明扼要,我目前有一些基于 Canvas 的游戏(真的没有人们说的那么糟糕,我在 1GHz CPU 上获得 30-40 之间的 FPS)并且性能很棒,但我有一些新的想法,我认为 OpenGL 是获得展示我令人眼花缭乱的特效所需的性能的唯一方法。
我有一个包含数千小时的 GameEngine,所以如果我可以避免它,我有点抗拒为了“测试”事情而进行巨大的架构更改(特别是因为我是 OpenGL 的新手并且可以'没有时间花一个月的时间来获得最佳性能(时间 = 金钱)。
我知道纹理切换非常昂贵。并且已经有一个系统可以将纹理区域保留在单个纹理上。我还跟踪屏幕上的对象,因此只有显示场景所需的绘制调用才会发送到 GPU。
所以我在屏幕上有大量的瓷砖/瓷砖层,每帧都必须重新绘制。会不会更好:
- 解析我的关卡文件并将每个图块变成一个多边形(四边形)链接到它的兄弟姐妹等,并在加载时为其创建一个 UV 贴图? (这将需要从将每个图块存储为 Rectangle 到跟踪相邻图块的点以便将它们链接起来的架构更改。
- 创建一个 QUAD 并将其在屏幕周围移动到所有位置,注意渲染可以使用相同纹理在同一通道上渲染的图块。
- 为每个图块创建一个 QUAD,然后在每个图块上调用 draw() 方法(仍然确保将纹理交换保持在最低限度或完全消失)。
要在屏幕上重新定位对象,我应该使用 glTranslate(我知道这会给 GPU 带来压力)还是更新保存 QUAD 坐标的 FloatBuffer 会更好?
非常感谢!
【问题讨论】: