Yem*_*lat 5 javascript canvas requestanimationframe
requestAnimationFrame每当屏幕准备好重绘时调用。在现代屏幕上,刷新率可能比每秒 60 帧高很多。如果在这些调用中发生了很多事情 - 它可能会影响应用程序的整体性能。
所以我的问题是:应该requestAnimationFrame总是被限制到 60FPS 吗?人眼真的能分辨出 16ms 和 8ms 重绘延迟之间的区别吗?
[更新] 为了在高刷新率的屏幕上获得更高的性能,我最终将其限制为 60FPS。并且会向在 rAF 呼叫中有很多事情要做的每个人建议这种方法。当然,您应该自己进行测试。
根据MDN,它不一定总是 60 FPS。
相关报价:
这将要求在浏览器执行下一次重绘之前调用您的动画函数。回调的次数通常为每秒 60 次,但通常与 W3C 推荐的大多数 Web 浏览器中的显示刷新率相匹配。在后台选项卡中运行时,回调速率可能会降低到较低的速率。
至于人眼能否区分 60 和 120 FPS,嗯,这是一个开放且自以为是的问题。有些人声称看到它,其他人声称这是不可能的。允许最终用户进行选择(或者只是充分利用他们的硬件)可能是最好的。
正如markE的评论指出的那样。该requestAnimationFrame回调接收到DOMHighResTimeStamp这是一种高精度计时器精确到“千分之一毫秒,到任何所需的值”通过使用此时间戳,并计算delta帧之间,你可以调整你的刷新率。
参考:
注意:请记住留下评论以解决任何downvotes,否则它们不是有用的反馈。