5

如何在 HTML5 画布上垂直同步回调

4

2 回答 2

9

没有这样的事情。浏览器应该负责进行适当的同步,您可以通过使用来帮助它requestAnimationFrame()- 例如,请参阅http://paulirish.com/2011/requestanimationframe-for-smart-animating/https://developer.mozilla .org/en-US/docs/Web/API/window/requestAnimationFrame

于 2011-05-17T02:49:23.953 回答
6

* 2017 年新答案 *

尽管这是 2011 年的旧答案,并且在当时是准确的,但“没有这样的事情”的旧答案现在有些过时了。

目前,截至 2017 年,requestAnimationFrame() 已在实践中广泛用于同步刷新周期,因此它现在已成为 VSYNC 回调。

只要浏览器性能不受限制(例如快速桌面),它在 120Hz 游戏监视器上每秒有 120 次回调,因此它现在可以扩展以监视所有 Web 浏览器中的刷新率(除了少数例外,例如 Microsoft IE/Edge 的 105Hz 限制)。

在 Chrome 中,requestAnimationFrame() 的时间参数是 VSYNC 时间,根据 www.vsynctester.com,requestAnimationFrame() 的现代实现现在已成为事实上的 VSYNC 回调——它通常在前一个 VSYNC 页面翻转后立即回调,以为下一个刷新周期(或 Windows 合成管理器,就此而言)渲染一个框架。

PS 我现在是 W3C Web 平台工作组的特邀专家,目前有一项修改 HTML 5.2 DRAFT 8 以阐明 rAF() 同步以刷新周期。另外,我写了一篇文章来进一步改进 HTML 5.2 或更高版本的 VSYNC API:http: //www.blurbusters.com/blur-busters-working-on-changes-to-html-5-2/

于 2017-05-12T01:19:30.343 回答