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

yur*_*rki 8 frame-rate smooth cocos2d-iphone

可能以前有人问过,但我找不到任何地方......

在视频领域,24 fps以及其他任何内容都很流畅.Cocos2d似乎只有在60 fps或者更低的时候才能流畅.30到50之间的任何东西肯定都不顺利,fps计数器似乎不准确......

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

Lea*_*s2D 24

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

Cocos2D 1.x默认使用CADisplayLink类进行更新,Cocos2D 2.x仅使用CADisplayLink.CADisplayLink使更新与屏幕刷新率同步.表示在屏幕完成绘制内容后发送通知.

当你获得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运行的大片.你会立即注意到电影中的人物有多"真实"和"栩栩如生".要获得一个印象,请查看这个非官方的48 fps The Hobbit预告片.

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