#html #canvas #callback #vsync
#HTML #canvas #обратный вызов #vsync
Вопрос:
Как я могу получить обратный вызов vsync на холсте HTML5?
Ответ №1:
Такого понятия не существует. Браузер должен позаботиться о выполнении соответствующей синхронизации, и вы можете помочь ему, используя requestAnimationFrame()
— см., например, http://paulirish.com/2011/requestanimationframe-for-smart-animating / и https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame .
Комментарии:
1. Блестяще. Это выглядит именно так, как я хочу.
Ответ №2:
* НОВЫЙ ответ 2017 *
Хотя это старый ответ 2011 года и точный для своего времени, старый ответ «Такой вещи не существует» сейчас несколько устарел.
В настоящее время, начиная с 2017 года, requestAnimationFrame () теперь широко используется для синхронизации с циклами обновления, поэтому теперь он по умолчанию стал обратным вызовом VSYNC.
Он выполняет 120 обратных вызовов в секунду на игровых мониторах с частотой 120 Гц, когда производительность браузера не ограничена (например, быстрые настольные компьютеры), поэтому теперь он масштабируется для отслеживания частоты обновления во всех веб-браузерах (за некоторыми исключениями, такими как ограничение 105 Гц для Microsoft IE / Edge).
В Chrome временным параметром requestAnimationFrame() является время VSYNC, и в соответствии с www.vsynctester.com современные реализации requestAnimationFrame () теперь стали обратным вызовом VSYNC по умолчанию — обычно он вызывается сразу после предыдущего переключения страницы VSYNC, чтобы отобразить фрейм для следующего цикла обновления (или Windows compositing manager, если на то пошло).
P.S. Теперь я приглашенный эксперт в рабочей группе веб-платформы W3C, и в настоящее время у меня есть один коммит в изменении HTML 5.2 ЧЕРНОВИКА 8, чтобы уточнить синхронизацию rAF () с циклами обновления. Кроме того, я написал статью о дальнейшем улучшении VSYNC API для HTML 5.2 или более поздней версии: http://www.blurbusters.com/blur-busters-working-on-changes-to-html-5-2 /