以前可能有人问过,但我找不到它在任何地方......
在 videoland 中,24 fps 及以上的速度都是流畅的。 Cocos2d 好像是
仅当 60 fps 或更低时才流畅。任何介于
30 和 50 肯定不流畅,fps 计数器似乎不准确......
为什么是这样?还是只有我有这种情况?
实际上,造成这种行为的原因有多种,并且不仅仅是 cocos2d,而是在具有以下环境的任何游戏引擎中都会出现的效果:垂直同步(垂直同步) 已启用。在 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 毫秒,这就会有效地将帧速率减半。这意味着在具有 CADisplayLink 更新的 iOS 上,您只能获得 60、30、20 和 15 fps(60 除以 1、2、3 和 4)的离散帧速率。
效果非常明显,因为帧速率在 60、30、20 和 15 fps 之间波动(即使只有不到一秒),感觉不平滑,主要是因为它非常不稳定 - 这种不稳定就是我们所说的“不平滑” ”。如果您的游戏受此影响,您可能会发现将帧速率限制为 30 fps 实际上会使游戏显得更流畅。您还有更多时间在帧之间更新和渲染内容。
24 fps 电影帧速率的稳定性被认为是“平滑”,但电影导演也学会了避免有限帧速率变得太明显的场景。例如,他们极力避免游戏经常做的事情:侧向滚动,即相机的侧向移动或经过相机的物体的侧向移动。
当您观看《霍比特人》时,您会惊讶地发现电影竟然如此流畅 - 这是第一部以 48 fps 运行的大片。您会立即注意到电影中的角色更加“真实”和“栩栩如生”。要获得印象,请查看此非官方 48 fps 霍比特人预告片.
cocos2d 显示的 fps 并不是从 60 到 30 到 20 和 15 fps 切换的准确表示,而是几个帧的平均帧速率。因此,当 cocos2d 打印“45 fps”时,这意味着游戏在过去几帧中一半时间显示 30 fps,另一半时间显示 60 fps。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)