首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iPhone上设置FPS速率上限?

在iPhone上设置FPS速率上限?
EN

Stack Overflow用户
提问于 2011-12-27 19:15:06
回答 3查看 4.5K关注 0票数 4

我如何限制我的OpenGL应用程序(我正在使用CADisplayLink)上的FPS速率,这样我就可以把CPU留给其他事情了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-27 20:37:54

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

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

票数 4
EN

Stack Overflow用户

发布于 2011-12-28 20:11:23

虽然这个问题已经得到了回答,但我还是想扩展一下。

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

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

frameInterval =1可获得60帧/秒

frameInterval =2可获得30fps

frameInterval =3可使您达到20 fps

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

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

这些值之外的FPS不是很稳定,通常会导致抖动动画,我们必须处理的时间片是1/60秒,所以只有倍数才会产生流畅的动画。即使你不使用CADisplayLink,并做了一个完美的定时路由来提供其他东西,硬件仍然会根据这个时间片绘制。

票数 6
EN

Stack Overflow用户

发布于 2011-12-27 20:22:52

我没有从函数中得到术语“限制我的FPS速率”。但为了让你的openGL应用程序运行流畅,它应该有高达60的FPS (在iOS 5中),你应该保持这个FPS (我想在你的情况下是有限的),以获得更好的性能。

Xcode提供了许多工具来帮助您分析和调优OpenGL ES应用程序,如OpenGL ES Programming Guide for iOS中所述

OpenGL ES性能检测- OpenGL ES性能检测在Xcode4中首次引入,它可以快速帮助您确定OpenGL ES是否是应用程序中的主要瓶颈;它应该是您运行来测试OpenGL ES代码的第一个工具。OpenGL ES性能检测的一个关键优势是,它可以自动将您立即引导到应用程序中最大程度降低OpenGL ES性能的关键位置。要使用OpenGL ES性能检测,请启动该工具,并使用它在连接到开发计算机的基于iOS的设备上选择您的应用程序。当应用程序到达您感兴趣的应用程序中的某个位置时,单击“收集证据”按钮。OpenGL ES性能检测记录您的应用程序在一系列帧中生成的OpenGL ES命令,分析这些命令以发现关键瓶颈,并提供特定的性能建议。OpenGL ES性能检测可在/Developer/Applications/Graphics Tools/目录中找到。

仪器(OpenGL ES分析)- OpenGL ES分析工具也是在Xcode4中引入的,它提供了许多功能来帮助您研究应用程序对OpenGL ES的使用。OpenGL ES分析工具记录应用程序生成的OpenGL ES命令,并在应用程序未遵循本编程指南中所述的最佳实践时发出警告;它会建议您可以进行的特定更改以遵循最佳实践。OpenGL ES分析工具允许您查看用于生成每帧动画的所有命令。最后,OpenGL ES分析工具允许您有选择地禁用图形流水线的某些部分,以确定该流水线部分是否为应用程序中的重要瓶颈。OpenGL ES分析工具为您提供了一组出色的工具,用于手动分析应用程序并了解其内部工作原理。但是,它不会自动将您指向应用程序当前遇到瓶颈的位置。例如,即使它提供了关于如何改进OpenGL ES编码实践的建议,该建议也并不意味着更改代码将自动提高应用程序的性能。

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8644031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档