【问题标题】:How can I improve the "smoothness" of a 2D side-scrolling iPhone game?如何提高 2D 横向卷轴 iPhone 游戏的“流畅度”?
【发布时间】:2010-08-08 03:03:57
【问题描述】:

我正在开发一款相对简单的 2D 横向卷轴 iPhone 游戏。控件是基于倾斜的。我对图形使用 OpenGL ES 1.1。游戏状态以 30 Hz 的速率更新……而绘图以 30 fps 的速率更新(通过 NSTimer)。画的流畅度还可以……但不如iFighter这样的游戏流畅。有什么办法可以提高游戏的流畅度?

以下是我简要考虑过的潜在问题:

  • 我一次改变最多 15 个“小”(20x20 像素)纹理的不透明度...显然以这种方式改变不透明度会降低绘图性能

  • 我的渲染速度仅为 30 fps(通过 NSTimer)...也许像 iFighter 这样的 2D 游戏以更高的帧速率渲染?

  • 也许游戏状态可以更快地更新?请注意,加速度值以 100 Hz 更新...所以我可能会以 100 Hz 更新部分游戏状态

  • 我所有的纹理都是 PNG24...也许 PNG8 会有所帮助(由于尺寸更小等)

【问题讨论】:

    标签: iphone graphics opengl-es accelerometer


    【解决方案1】:

    用这个来调试图形问题真的很难。尝试使用 openGL ES 工具来查找瓶颈在哪里。这很方便。另外,请查看 openGL 上的 WWDC 视频。他们真的很棒。

    我注意到的一件事是您说“我的渲染速度仅为 30 fps”。这是否意味着您正在手动设置计时器或其他东西?这不是一个好方法,您应该使用CADisplayLink 在屏幕想要更新时获得通知。它可以提高你的平滑度。

    【讨论】:

      【解决方案2】:

      要在 30fps 上完成 Mo 的回答...

      您以 30fps 的速度请求更新并不意味着您会得到它。我不是 iphone 程序员,但我可以告诉你,如果你的帧渲染需要 100 毫秒,那么你保证更新速度永远不会超过 10fps。如果您实际上以 10fps 进行渲染,那么平滑度就消失了。

      因此,请测量您渲染所花费的时间,以了解您获得的实际帧速率。至于如何专门针对 iphone 优化渲染,我会留给在这个主题上比我更专业的人。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多