2009-12-02 70 views
3

我正在开发一款使用OpenGL ES 1.1的iPhone和iPod Touch的2D游戏。在iPhone,iPhone 3G和所有iPod Touch型号上,一切正常。游戏通常以〜60 FPS渲染场景。iPhone 3GS OpenGL奇怪的bug

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

我认为它与NSTimer有关,因为如果我将绘图触发模式更改为可从SDK 3.1+获得的新CADisplayLink类,那么在所有设备上以及在3GS上都可以。

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

任何人都有iPhone 3GS的这个问题吗?如果是这样,请帮我解决。

谢谢!

+0

我一直有同样的问题......开车自己疯了试图解决它。希望这个作品! – Adam 2010-03-13 14:29:39

回答

2

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

的iPhone OS版本是retreivable使用下面的代码从苹果公司的UI Device Class Reference

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

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

然而,你也应该确保你在Xcode中设置您的部署目标到3.0或任何最低版本要运行上。

+0

你在3GS上遇到过同样的问题吗? – 2009-12-02 14:04:18