javascript - requestAnimationFrame 调用是否应始终被限制为 60 FPS?

标签 javascript canvas requestanimationframe

requestAnimationFrame 在屏幕准备好重绘时被调用。 在现代屏幕上,刷新率可能比每秒 60 帧高很多。如果这些调用中发生了很多事情 - 它可能会影响应用程序的整体性能。

所以我的问题是:requestAnimationFrame 是否应始终被限制为 60FPS?人眼真的能分辨出 16 毫秒和 8 毫秒重绘延迟之间的区别吗?

[更新] 我最终将其降低到 60FPS,以便在高刷新率的屏幕上获得更高的性能。 并且会向在 rAF 调用中有很多事情的每个人推荐这种方法。 当然,您应该进行自己的测试。

最佳答案

根据 MDN它不一定总是 60 FPS。

相关引用:

This will request that your animation function be called before the browser performs the next repaint. The number of callbacks is usually 60 times per second, but will generally match the display refresh rate in most web browsers as per W3C recommendation. The callback rate may be reduced to a lower rate when running in background tabs.

至于人眼能否区分 60 和 120 FPS,嗯,这是一个开放的、固执己见的问题。有些人声称看到了,有些人则声称不可能。允许最终用户选择(或简单地充分利用他们的硬件)可能是最好的。

作为markE's comment指出。 requestAnimationFrame回调收到 DOMHighResTimeStamp这是一个精确到“thousandth of a millisecond.”的高精度计时器。通过使用这个时间戳,并计算帧之间的增量,您可以将刷新率调整到任何所需的值。

引用资料:

注意:请记住对任何反对票发表评论,否则它们不是有用的反馈。

关于javascript - requestAnimationFrame 调用是否应始终被限制为 60 FPS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26120838/

相关文章:

javascript - 使用react从animationFrame内部访问状态数组时出现问题

javascript - 需要有关更新 D3.js 词云的帮助

javascript - 如何从 iframe 中获取当前 iframe 偏移量?

python-3.x - matplotlib 使用figure.canvas.draw() 和figure.savefig() 抛出错误: "ValueError: Expected 2-dimensional array, got 1"

jquery - 以比屏幕更高的 DPI 创建 Canvas 对象?

javascript - requestAnimationFrame 之前不必要的延迟?

javascript - 存储 requestAnimationFrame

javascript - 多个翻转框 - 但只翻转点击的那个

javascript - 带有 HTTP 请求的 Meteor 方法不返回回调

javascript - 使 Canvas 填充包括形状中的描边