我正在开发一个IP *游戏,我利用这两个UIKit中和OpenGL ES 2.0。 所述的UIKit元素呈现在OpenGL的视图和占据的屏幕空间显著(任意的)的量。 我必须承认,苹果已经做了出色的工作和游戏的帧速率始终是60 FPS。
为了得出这个结论,我就做了很多性能测试:
- 我增加了很多静态的(不动)UIViews在OpenGL的观点 - OK!
- 我的动画使用自定义代码相同UIViews(在我的游戏的并条机方法修改的中心属性) - OK!
- 我加入了UIViews在许多OpenGL ES的元素 - OK!
- 我加入了UIViews下许多动人的OpenGL ES的元素 - OK!
所以,现在我想利用核心动画框架,以动画的UIKit元素。 我利用
[UIView animateWithDuration:delay:options:animations:completion:]
在奥得来执行的动画(我定位的iOS 4或更新版本)。
现在的问题是,帧速率有这种怪异的行为:有时我得到60 fps的很多很多 UIKit的动画元素(30元对我来说是OK)和其他一些倍帧速率显然是在60个FPS即使只有一个生动活泼的UIKit元素,但我不能用仪器测量它! 让我来解释更多:当我打开仪器和监控核心动画和/或OpenGL驱动程序我总是得到60个FPS。 但很明显,这是不是这样的,我可以用我的眼睛看到了OpenGL的动画移动比顶部的相应的UIKit动画慢得多。 如果我从视图中移除的UIKit元件帧速率来恢复正常。 用一个类似的情况我在这里描述发生在任何OpenGL ES的游戏,当用户玩游戏时更改设备的音量。 当显示当前的音量的透明视图开始淡出,直到它完全消失帧速率急剧下降,但在仪器(I已经作出这个测试太)它被粘结在60帧!
所以,总结一下:有时我得到真正的60fps的有没有跌宕起伏的运行和其他一些时候,我得到假每秒60帧,没有大起大落块动画。
你有没有解决这个? 所有的测试都与iOS 5.1在iPad 2和iPhone 3GS进行