为什么cocos2d中只有60 fps真的流畅?

时间:2012-12-11 23:21:36

标签: cocos2d-iphone frame-rate smooth

之前可能有人问过,但我无法在任何地方找到它......

在视频领域,24 fps以及其他任何内容都很流畅。 Cocos2d似乎是 只有当它的60 fps或者更低时才能平滑。之间的任何事情 30和50肯定不平滑,fps计数器似乎不准确......

这是为什么?或者只有我有这种情况?

2 个答案:

答案 0 :(得分:24)

这种行为实际上有几个原因,它不仅仅是cocos2d,而是在启用了vertical synchronization(VSYNC)的环境中的任何游戏引擎中都能看到的效果。在iOS上,VSYNC始终处于开启状态,在PC上,如果它们始终低于监视器的速率,则通常可以选择将其关闭以提高帧速率screen tearing。通常,像iOS设备这样的LCD会以60 Hz的频率更新显示屏,最高可达60 fps。

Cocos2D 1.x默认使用CADisplayLink类进行更新,Cocos2D 2.x仅使用CADisplayLink。 CADisplayLink使更新与屏幕刷新率同步。这意味着当屏幕完成绘制其内容时会发送通知。

当你获得60 fps时,一切都很好。但是如果游戏无法及时渲染帧以渲染60 fps,则只有在下一次屏幕刷新完成后才会收到下一次更新。一旦帧速率下降到60 fps以下,这就有效地将帧速率减半 - 或者换句话说,只要你的更新速度低于60 fps。渲染周期需要超过16.666毫秒才能完成。这意味着在iOS上使用CADisplayLink更新时,您只能拥有60,30,20和15 fps(60除以1,2,3和4)的离散帧速率。

效果非常明显,因为帧速率在60,30,20和15 fps之间波动 - 即使只是几分之一秒 - 也不会感觉光滑,主要是因为它非常不稳定 - 我们注意到的是不稳定“不光滑”。如果您的游戏受此影响,您可能会发现将帧速率限制为30 fps实际上会使游戏显得更加流畅。您还有更多时间来更新&渲染帧之间的东西。

24 fps电影帧速率的稳定性被设想为“流畅”,但电影导演也学会了避免有限帧率变得非常明显的场景。例如,他们避免了游戏经常发生的事情:侧向滚动,即相机的侧向移动或通过相机的物体的侧向移动。

当你看“霍比特人”时,你会惊讶地发现电影更加流畅 - 这是第一部以48 fps运行的大片。你会立即注意到电影中的人物有多“真实”和“栩栩如生”。要获得展示,请查看此unofficial 48 fps The Hobbit trailer

cocos2d显示为fps不能准确表示从60到30到20和15 fps的切换,而是几帧的平均帧速率。因此,当cocos2d打印“45 fps”时,意味着游戏显示30 fps的一半时间,另一半则是过去几帧的60 fps。

答案 1 :(得分:2)

两个主要问题。

首先是匹配显示器的刷新率 - 其他任何东西,你得到不规则的运动,眼睛/大脑善于发现。至少是它的倍数。

其次是运动模糊。电影/视频往往会出现运动模糊,这会让观众看不到连续的动作。