OpenGL ES 中的大滚动背景

zou*_*oul 5 iphone performance scroll 2d opengl-es

我正在为 iPhone 开发 2D 滚动游戏。我有一个大图像背景,比如 480×6000 像素,只有一部分是可见的(正好是一个屏幕的价值,480×320 像素)。在屏幕上获得这种背景的最佳方法是什么?

目前,我将背景拆分为多个纹理(以绕过最大纹理大小限制),并将每一帧中的整个背景绘制为带纹理的三角形条。滚动是通过转换模型视图矩阵来完成的。剪刀框设置为窗口大小,480×320像素。这并不意味着要快,我只是想在开始优化之前有一个工作代码。

我认为 OpenGL 实现可能足够聪明,可以丢弃背景的不可见部分,但根据我编写的一些测量代码,背景平均需要 7 毫秒才能绘制,最多需要 84 毫秒。(这是在模拟器中测量的。)这大约是整个渲染循环的一半,即。对我来说很慢。

绘制背景应该像将一些 480×320 像素从 VRAM 的一个部分复制到另一个部分一样简单,或者换句话说,非常快。接近这种性能的最佳方法是什么?

Men*_*boy 4

这是最快的方法。您可以采取以下措施来提高性能:

  • 尝试不同的纹理格式。SDK 文档大概有关于首选格式的详细信息,并且大概越小越好。
  • 自己完全剔除屏幕外的图块
  • 将图像分割成更小的纹理

我假设您以 1:1 的缩放比例进行绘制;是这样吗?

编辑:哎呀。更仔细地阅读了您的问题后,我必须提供另一条建议:在模拟器上进行的计时毫无价值。