限制iPhone的FPS率



我如何限制我的FPS速率在我的OpenGL应用程序(我使用CADisplayLink),所以我可以离开CPU的其他事情?

虽然这个问题已经得到了解答,但我还是想进一步阐述一下。

推荐的方法确实是使用CADisplayLink和frameInterval来限制你的基本帧率,硬件中的显示本身有一个固定的刷新率,CADisplayLink方法与我们的绘图方法调用同步硬件刷新,所以绘图方法有最多的时间工作。

因为CADisplayLink是硬件生成的,所以你唯一能做的就是划分时间,这就是frameInterval要做的。

frameInterval = 1让你获得60帧/秒

frameInterval = 2获得30 fps

frameInterval = 3让你获得20fps

例如,我在菜单中使用了很多frameInterval = 5,它仍然给我12fps(关于合理简单动画的最小值),并且电池消耗大大减少。

我还使用了动态帧率变化,通过测量平均帧率并选择低于此的frameInterval,这有助于保持游戏的流畅性。

超出这些值的FPS不是很稳定,通常会导致抖动的动画,我们必须使用的时间片是1/60秒,所以只有倍数才会产生流畅的动画。即使您不使用CADisplayLink并制作一个完美的定时路由来传递其他内容,硬件仍然会使用该时间片进行绘制。

一般来说,如果你使用苹果推荐的CADisplayLink方法来绘制应用程序,你并不能真正控制刷新率。然而,你可以将frameInterval属性设置为大于1的值来跳过绘制帧,从而降低帧率。例如,frameInterval = 2应该给你大约30 fps而不是60 fps。

将一些应用程序工作放在另一个线程上或优化您的绘图任务可能比削减帧率更有用。

我没有从函数中得到术语"限制我的FPS速率"。但要使你的openGL应用程序顺利运行,它的FPS应该高达60(在iOS 5中),你应该保持(我认为在你的情况下限制)FPS以获得更好的性能。

Xcode提供了许多工具来帮助你分析和调整你的OpenGL ES应用程序,如iOS的OpenGL ES编程指南所述:

OpenGL ES性能检测 -首次在Xcode 4中引入,OpenGL ES性能检测可以快速帮助您确定是否OpenGL ES是应用程序的主要瓶颈;应该是第一个用来测试OpenGL ES代码的工具。的关键优势OpenGL ES的性能检测是它可以自动引导您可以立即到达应用程序中的关键位置减慢OpenGL ES的性能。使用OpenGL ES性能侦探,启动该工具并使用它来选择您的应用程序连接到开发机器的基于ios的设备。当你的应用程序到达应用程序中感兴趣的位置请单击"收集证据"按钮。OpenGL ES性能侦探记录你的应用程序生成的OpenGL ES命令一系列的帧,分析命令来发现密钥瓶颈并提供特定的性能建议。的OpenGL ES性能检测可以在/Developer/Applications/Graphics Tools/目录。

Instruments (OpenGL ES Analysis) -同样在Xcode 4中引入,OpenGL ES Analysis工具提供了许多功能来帮助你研究你的应用程序对OpenGL ES的使用。OpenGL ES分析工具记录由您的应用程序和生成的OpenGL ES命令当应用程序没有遵循最佳实践时发出警告在本编程指南中描述;它建议具体的改变您可以使其遵循最佳实践。OpenGL ES分析工具允许您查看用于生成每一帧的所有命令动画。最后,OpenGL ES分析工具允许您有选择地禁用部分图形管道,以确定是否这部分管道是您的应用程序。OpenGL ES分析工具为您提供了一组很棒的手动分析应用程序并了解其内部的工具运作。然而,它不会自动地把你指向应用程序当前遇到瓶颈的位置。为例如,即使它提供了一个如何提高你的OpenGL ES编码实践,这一建议并不意味着修改代码会自动提高性能

Instruments (OpenGL ES Driver) - OpenGL ES Driver工具在Xcode 3及更高版本上提供。它不直接分析OpenGL您的应用程序提交的ES命令。相反,它允许你这样做监视有关如何使用图形硬件的关键统计信息您的应用程序。例如,您可以使用它来跟踪的数量字节用来保存纹理数据和这些数字如何变化帧对帧

最新更新