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