HTML5 RequestAnimationFrame 运行 是在 CPU 还是 GPU 上?
Does HTML5 RequestAnimationFrame run on CPU or GPU?
这个答案不容易找到。我在 HTML5 中搜索了很多关于 RequestAnimationFrame 的权威文档,似乎它从未在 GPU 中被指定为 运行。 GPU 有时会被推断出来,但参考文献似乎是必然的。
所以我认为 RequestAnimationFrame 是 CPU,只是从未明确说明。
有没有人在 CPU 或 GPU 上找到明确的分类?
我想如果它是 GPU,它就会无处不在。谢谢
严格来说,它总是在 CPU 上运行,就像所有 JavaScript 一样。但这不是 "CPU vs GPU" 区别对动画很重要的部分。
重要的是您在回调中启动的操作类型是否会得到 GPU 加速。这与您启动它们的方式无关,因此对于 GPU 加速 requestAnimationFrame
根本不会改变任何东西。如果浏览器能够 GPU 加速操作,它会(例如,如果你动画 opacity
或 transform
)。如果它不能(例如,如果你为 width
或 height
设置动画),那么它就不会。
不过,最好使用 requestAnimationFrame
而不是 setTimeout
/setInterval
,因为它允许浏览器选择回调的最佳时间和频率(例如,通过放慢速度来节省电量)不可见标签中的动画)。
这个答案不容易找到。我在 HTML5 中搜索了很多关于 RequestAnimationFrame 的权威文档,似乎它从未在 GPU 中被指定为 运行。 GPU 有时会被推断出来,但参考文献似乎是必然的。
所以我认为 RequestAnimationFrame 是 CPU,只是从未明确说明。
有没有人在 CPU 或 GPU 上找到明确的分类?
我想如果它是 GPU,它就会无处不在。谢谢
严格来说,它总是在 CPU 上运行,就像所有 JavaScript 一样。但这不是 "CPU vs GPU" 区别对动画很重要的部分。
重要的是您在回调中启动的操作类型是否会得到 GPU 加速。这与您启动它们的方式无关,因此对于 GPU 加速 requestAnimationFrame
根本不会改变任何东西。如果浏览器能够 GPU 加速操作,它会(例如,如果你动画 opacity
或 transform
)。如果它不能(例如,如果你为 width
或 height
设置动画),那么它就不会。
不过,最好使用 requestAnimationFrame
而不是 setTimeout
/setInterval
,因为它允许浏览器选择回调的最佳时间和频率(例如,通过放慢速度来节省电量)不可见标签中的动画)。