在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
如何提高帧率?
答案 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。当然,在测试运行时,您不会在屏幕上看到测试的实时更新。