【问题标题】:2D iPhone game performance2D iPhone游戏性能
【发布时间】:2010-08-04 01:57:57
【问题描述】:

我的 2D OpenGL ES iPhone 游戏遇到了一些间歇性瓶颈。当我在 Shark 中对其进行分析时,并没有什么特别之处。在游戏中,背景占据了整个屏幕,我有大约 7-8 个较小的精灵在屏幕上连续移动。在大多数情况下它运行顺利,但时不时地我会得到一个小的框架口吃。这是经常移动的游戏的常见问题吗?

另外,作为旁注,我正在调用 glClear(GL_COLOR_BUFFER_BIT);在每一帧渲染之后。如果我忽略它,我仍然偶尔会出现一些跳帧,但它比我保留 glClear 调用的频率要低。我还在为我的所有游戏精灵使用单个 spritesheet 纹理。

【问题讨论】:

  • 如果您已经意识到不需要它,为什么还要调用 glClear?如果您只是要再次在屏幕上绘制背景,那么清除屏幕是没有意义的。
  • 经过进一步研究后,我发现在 iphone 硬件上保留 glClear 实际上会导致性能下降。在其他设备上可能并非如此。

标签: iphone performance opengl-es


【解决方案1】:

您如何管理屏幕刷新?也许您没有完全同步到显示刷新率。如果您还没有,我建议您使用CADisplayLink 将您的刷新与显示匹配。 Apple 最新的 OpenGL ES 模板展示了如何做到这一点。

【讨论】:

  • 我可能没有同步到显示刷新率。我正在调用 [NSTimer scheduledTimerWithTimeInterval:1.0/60.0 target:self selector:@selector(mainGameLoop) userInfo:nil repeats:NO];然后我在我的 mainGameLoop 函数结束时进行了相同的调用(从而导致我的循环稍微延迟并保留 cpu 资源)。 CADisplayLink 看起来很有希望。今晚我将尝试实现它。
猜你喜欢
  • 2013-08-28
  • 1970-01-01
  • 2018-01-07
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
相关资源
最近更新 更多