我正在为 iPhone 开发 2D 滚动游戏。我有一个大图像背景,比如 480×6000 像素,只有一部分是可见的(正好是一个屏幕的价值,480×320 像素)。在屏幕上获得这种背景的最佳方法是什么?
目前,我将背景拆分为多个纹理(以绕过最大纹理大小限制),并将每一帧中的整个背景绘制为带纹理的三角形条。滚动是通过转换模型视图矩阵来完成的。剪刀框设置为窗口大小,480×320像素。这并不意味着要快,我只是想在开始优化之前有一个工作代码。
我认为 OpenGL 实现可能足够聪明,可以丢弃背景的不可见部分,但根据我编写的一些测量代码,背景平均需要 7 毫秒才能绘制,最多需要 84 毫秒。(这是在模拟器中测量的。)这大约是整个渲染循环的一半,即。对我来说很慢。
绘制背景应该像将一些 480×320 像素从 VRAM 的一个部分复制到另一个部分一样简单,或者换句话说,非常快。接近这种性能的最佳方法是什么?