它可能以前曾被问过,但我在任何地方都找不到。。。
在videoland中,24 fps或更高的速度很平滑。 Cocos2d似乎是
仅在60 fps或以下时才平滑。之间的任何东西
30和50当然不平滑,fps计数器似乎不准确...
为什么是这样?还是只有我有这种情况?
最佳答案
实际上,有多种原因会导致这种现象,这不仅是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,这将有效地将帧速率减半-换句话说,只要更新和渲染周期花费的时间超过16.666毫秒即可完成。这意味着在具有CADisplayLink更新的iOS上,您只能具有60、30、20和15 fps的离散帧速率(60除以1、2、3和4)。
这种效果非常明显,因为帧率在60、30、20和15 fps之间波动-即使只是几分之一秒-不会感觉到光滑,主要是因为它非常不稳定-不稳定是我们注意到的“不稳定” ”。如果您的游戏受到此影响,则可能会发现将帧速率限制为30 fps实际上会使游戏看起来更流畅。您也有更多时间更新和渲染帧之间的内容。
被认为是“平滑”的是24 fps电影帧速率的稳定性,但是电影导演也学会了避免在有限帧速率变得太明显的场景中使用。例如,他们避开了 hell 般经常玩的游戏:向侧面滚动,即摄像机横向移动,或通过摄像机的物体横向移动。
当您观看《霍比特人》时,您会惊讶地看到电影流畅得多,这是第一部以48 fps播放的大片。您会立即注意到电影中角色的“真实”和“逼真的”形象。要获得印象,请查看此unofficial 48 fps The Hobbit trailer。
cocos2d显示为fps的不是准确表示从60到30到20以及15 fps的切换,而是几帧的平均帧速率。因此,当cocos2d打印“45 fps”时,这意味着游戏在过去的几帧中有一半时间显示30 fps,另一半则为60 fps。
关于cocos2d-iphone - 为什么在cocos2d中只有60 fps真正平滑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13830185/