在iPhone上限制FPS费率?

use*_*252 4 iphone frame-rate opengl-es frame cap

如何限制我的OpenGL应用程序的FPS速率(我正在使用CADisplayLink),所以我可以将CPU留给其他东西?

led*_*d42 6

虽然已经回答了这个问题但我想稍微扩展一下.

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

由于CADisplayLink是硬件生成的,因此你唯一可以做的就是划分时间,这就是frameInterval所要做的事情.

frameInterval = 1可以获得60 fps

frameInterval = 2可以获得30 fps

frameInterval = 3可以获得20 fps

例如,我对菜单使用了很多frameInterval = 5,它仍然给我12fps(大约是合理简单动画的最小值),电池消耗大幅减少.

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

FPS在这些值之外并不是非常稳定,并且通常会导致抖动动画,我们必须处理的时间片是1/60秒,所以只有它的倍数会产生流畅的动画.即使您不使用CADisplayLink并制作完美的时序路由以提供其他内容,硬件仍将使用该时间片进行绘制.