3

我正在使用 OpenGL ES 1.1 为 iPhone 和 iPod Touch 开发 2D 游戏。在 iPhone、iPhone 3G 和所有 iPod Touch 型号上一切正常。游戏通常以约 60 FPS 的速度渲染场景。

这也发生在 iPhone 3GS 上,但有时(它是完全随机的)3GS 将帧速率降低到 40 FPS 左右,并且动画看起来不连贯。如果用户锁定手机并从睡眠模式恢复,也会发生这种情况。

我认为这与 NSTimer 有关,因为如果我将绘制触发模式更改为 SDK 3.1+ 中可用的新 CADisplayLink 类,那么所有设备上的一切都正常......在 3GS 上也是如此。

我不知道如何解决这个问题,也不想发布带有 3.1+ 限制的应用程序。仍然有很多用户使用 3.0 设备。

iPhone 3GS 也有这个问题吗?如果是这样,请帮助我解决方法。

谢谢!

4

1 回答 1

2

您可以使用这两个库并在 3.0 或 3.1 设备上获得最佳结果。这很好,因为 AppStore 使用的 iPhone OS 最低版本包含在应用程序的 Info.plist 文件中。

iPhone OS 版本可使用 Apple 的UI Device Class Reference中的以下代码检索:

float iPhoneOSVersion = [[[UIDevice currentDevice] systemVersion] floatValue];

if ( iPhoneOSVersion >= 3.1 ) {
    useNewerFramework();
} else {
    useOlderFramework();
}

但是,您还应该确保将 Xcode 中的部署目标设置为 3.0 或您希望运行的任何最低版本。

于 2009-12-02T11:16:44.910 回答