我正在使用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问题的人呢?如果是这样,请帮我解决一下。
谢谢!
答案 0 :(得分:2)
您可以使用这两个库,并在3.0或3.1设备上获得最佳结果。 这很好,因为AppStore使用的iPhone OS最低版本包含在应用程序的Info.plist文件中。
使用Apple的UI Device Class Reference:
中的以下代码可以转换iPhone OS版本float iPhoneOSVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
if ( iPhoneOSVersion >= 3.1 ) {
useNewerFramework();
} else {
useOlderFramework();
}
但是,您还应确保将Xcode中的部署目标设置为3.0或任何您希望运行的最低版本。