如何在HTML5画布上 vsync 回调?
答案 0 :(得分:8)
没有这样的事情。浏览器应该注意执行相应的同步,您可以使用requestAnimationFrame()
来帮助它 - 例如,请参阅http://paulirish.com/2011/requestanimationframe-for-smart-animating/和http://webstuff.nfshost.com/anim-timing/Overview.html#dfn-sample-all-animations
答案 1 :(得分:2)
* 2017年新答案*
虽然这是一个陈旧的2011年答案,而且时间准确,但旧的答案是"没有这样的事情"现在有点过时了。
目前,截至2017年,requestAnimationFrame()现在已广泛应用于刷新周期,因此它现在已成为VSYNC回调。
每当浏览器性能不受限制(例如快速桌面)时,它在120Hz游戏监视器上每秒有120次回调,因此它现在可以扩展以监控所有Web浏览器的刷新率(除了少数例外,例如Microsoft IE / Edge&# 39; s 105Hz限制)。
在Chrome中,requestAnimationFrame()的time参数是VSYNC时间,根据www.vsynctester.com,requestAnimationFrame()的现代实现现在已成为事实VSYNC回调 - 它通常在之后立即回调之前的VSYNC页面翻转,为下一个刷新周期(或窗口合成管理器)渲染帧。
P.S。我现在是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/