在iPhone上设置FPS费率上限?

在iPhone上设置FPS费率上限?,iphone,opengl-es,frame,frame-rate,cap,Iphone,Opengl Es,Frame,Frame Rate,Cap,如何在OpenGL应用程序(我正在使用CADisplayLink)上限制我的FPS速率,以便我可以将CPU用于其他事情?我没有从函数中获得术语“限制我的FPS速率”。但要使openGL应用程序平稳运行,它应该具有高达60的FPS(在iOS 5中),并且您应该保持(我认为在您的情况下限制)该FPS以获得更好的性能 Xcode提供了许多工具来帮助您分析和优化OpenGL ES应用程序,如中所述: OpenGL ES Performance Detective-首先在Xcode 4中引入,OpenGL

如何在OpenGL应用程序(我正在使用CADisplayLink)上限制我的FPS速率,以便我可以将CPU用于其他事情?

我没有从函数中获得术语“限制我的FPS速率”。但要使openGL应用程序平稳运行,它应该具有高达60的FPS(在iOS 5中),并且您应该保持(我认为在您的情况下限制)该FPS以获得更好的性能

Xcode提供了许多工具来帮助您分析和优化OpenGL ES应用程序,如中所述:

OpenGL ES Performance Detective-首先在Xcode 4中引入,OpenGL ES Performance Detective可帮助您快速确定 OpenGL ES是应用程序中的主要瓶颈;应该是 第一个用来测试OpenGL ES代码的工具。一个关键的优势 OpenGL ES Performance Detective就是它可以自动引导 您可以立即访问应用程序中的关键位置 最慢的OpenGL ES性能。要使用OpenGL ES性能 Detective,启动该工具并使用它在 连接到开发计算机的基于iOS的设备。当你的 应用程序到达应用程序中感兴趣的位置 对于您,请单击“收集证据”按钮。OpenGLES性能 Detective records OpenGL ES命令您的应用程序通过 一系列帧,分析命令以发现关键点 瓶颈,并提供特定的性能建议。这个 OpenGL ES Performance Detective可以在 /开发者/应用程序/图形工具/目录

仪器(OpenGL ES分析)同样在Xcode 4中引入,OpenGL ES分析工具提供了许多功能来帮助您 研究应用程序对OpenGL ES的使用情况。opengles分析 该工具记录应用程序生成的OpenGL ES命令和 当应用程序未遵循最佳实践时发出警告 在本编程指南中描述;它建议作出具体修改 您可以选择遵循最佳实践。opengles分析工具 允许您查看用于生成每帧图像的所有命令 动画最后,OpenGL ES分析工具允许您 有选择地禁用部分图形管道以确定 管道的这一部分是您业务流程中的一个重要瓶颈 应用OpenGL ES分析工具为您提供了一套强大的 用于手动分析应用程序并了解其内部结构的工具 工作原理。但是,它不会自动将您指向 应用程序当前瓶颈所在的位置。对于 例如,即使它提供了如何改进您的 OpenGLES编码实践,这个建议并不意味着 更改代码会自动提高性能 你的申请

仪器(OpenGL ES驱动程序)-OpenGL ES驱动程序工具在Xcode 3及更高版本上提供。它不直接分析OpenGL ES应用程序提交的命令。相反,它允许您 监控有关用户如何使用图形硬件的关键统计信息 你的申请。例如,您可以使用它来跟踪 用于保存纹理数据的字节以及这些数字从 帧对帧


一般来说,如果你使用苹果推荐的方法来绘制你的应用程序,你实际上无法控制刷新率。但是,可以将frameInterval特性设置为大于1的值以跳过绘图帧,从而降低帧速率。例如,frameInterval=2应该为您提供大约30 fps而不是60 fps


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

虽然已经回答了这个问题,但我想再扩展一下

建议的方法确实是使用CADisplayLink和frameInterval来限制基本帧速率,硬件中的显示本身具有固定的刷新率,并且CADisplayLink方法将硬件刷新与调用我们的绘图方法同步,以便绘图方法有最多的工作时间

由于CADisplayLink是由硬件生成的,因此您只能使用它来划分时间,这就是frameInterval的作用

frameInterval=1可获得60 fps的速度

frameInterval=2可获得30 fps的速度

frameInterval=3可获得20 fps的速度

例如,对于菜单,我使用了lot FRAMETERVAL=5,它仍然可以提供12fps(对于合理的简单动画来说,这是最小的),并且电池消耗大大减少

我还使用了动态帧速率变化,通过测量平均帧速率并选择有助于保持游戏流畅的帧间隔


FPS在这些值之外不是很稳定,通常会产生抖动动画,我们必须处理的时间片是1/60秒,因此只有该时间片的倍数才会产生流体动画。即使您不使用CADisplayLink并进行完美的定时路由来交付其他内容,硬件仍将使用该时间片进行绘制。

该应用程序大量使用像素着色器。在3gs上不可能达到60 fps。我知道这不会很顺利。在3gs(与iOS4配合使用)上,为了获得更好的性能,建议使用30fps。。尽管您使用了繁重的图形,但可以使用工具来指导您哪个渲染正在丢弃FPS。我曾见过人们使用仪器来找出FPS下降的确切问题。这些工具引导他们找到问题所在的确切代码。