Sum*_*mon 8 iphone animation opengl-es quartz-graphics uikit
我正在开发一款iP*游戏,我使用了UIKit和OpenGL ES 2.0.UIKit元素在OpenGL视图上呈现,占据了大量(任意)的屏幕空间.我必须承认Apple已经做了出色的工作,游戏的帧速率始终是60 FPS.
为了得出这个结论,我对性能做了很多测试:
所以,现在我想利用核心动画框架来动画UIKit元素.我利用了
[UIView animateWithDuration:delay:options:animations:completion:]
Run Code Online (Sandbox Code Playgroud)
在oder中执行动画(我的目标是iOS 4或更新版本).
现在的问题是,帧速率有这种怪异的行为:有时我在60 fps的很多很多 UIKit的动画元素(30元对我来说是OK)和其他一些倍帧速率显然是在60个FPS即使有单一动画的UIKit元素,但我无法用仪器测量它!让我解释一下:当我打开仪器并监控核心动画和/或OpenGL驱动程序时,我总是得到60 fps.但很明显,事实并非如此,我可以看到OpenGL动画的移动速度比顶部相应的UIKit动画慢得多.如果我从视图中删除UIKit元素,帧速率将恢复正常.当用户在玩游戏时改变设备的音量时,在任何OpenGL ES游戏中都会发生与我在此描述的类似情况.当显示当前音量的透明视图开始淡出并且直到它完全消失时,帧速率急剧下降,但在乐器中(我也进行了此测试)它被卡在60 fps上!
所以,总结一下:有时我会得到真正的60 fps的块动画,没有跑步的起伏,有些时候我得到假的60 fps,没有起伏.
你对此有什么解决方案吗?所有测试均在带有iOS 5.1的iPad 2和iPhone 3GS上进行
我设法解决了这个问题,现在我可以在我的OpenGL游戏中结合使用基于UIView块/核心的动画,而不会有任何性能下降.
解决方案非常简单:
最好,
| 归档时间: |
|
| 查看次数: |
1812 次 |
| 最近记录: |