在Cocos2D V3中将帧率从60增加到90没有任何影响

时间:2015-03-02 18:48:44

标签: objective-c cocos2d-iphone frame-rate

在CCAppDelegate中,我设置了:

NSTimeInterval animationInterval = [(config[CCSetupAnimationInterval] ?: @(1.0/90.0)) doubleValue];
[director setAnimationInterval:animationInterval];

director.fixedUpdateInterval = [(config[CCSetupFixedUpdateInterval] ?: @(1.0/90.0)) doubleValue];

并且在CCDirectoriOS中 - 我设置了startAnimation:

int frameInterval = (int) floor(_animationInterval * 90.0f);

CCLOG(@"cocos2d: animation started with frame interval: %.2f", 90.0f/frameInterval);

但FPS计数器最多显示59/60 fps

如何提高帧率?

2 个答案:

答案 0 :(得分:2)

将帧速率提高到60以上是没有意义的,因为屏幕刷新率为60Hz,因此屏幕上的不会产生任何差异,这只会浪费电池和CPU。

理论上你可以在cocos2d中增加它,但是你必须改变一些代码,因为cocos2d使用CADisplayLink作为它的内部计时器,它显然与显示器相关联,因此最多可以提供60 fps。您必须拥有自己的刷新计时器,间隔为1.0 / 90.0。但你仍然不会看到差异。

答案 1 :(得分:1)

真正的原因是iOS设备的固定屏幕刷新率为60 Hz。在iOS上,您无法每秒显示超过60帧,因为屏幕刷新的速度不会超过60 Hz(=每秒的时间)。几乎所有其他移动设备都是如此。

现在在PC上,关闭垂直同步并让GPU尽可能快地渲染是很常见的,你可以拥有所有screen tearing。在移动设备上,VSync始终处于打开状态,您无法将其关闭。

移动基准测试软件经常使用所谓的“屏幕外渲染”测试,它们将所有内容渲染到内存缓冲区中,以规避60 Hz的限制,并提出理论上可实现的帧速率,如150 fps。当然,在测试运行时,您不会在屏幕上看到测试的实时更新。