Я работаю над симулятором нескольких снарядов для проекта колледжа, и мне интересно, как лучше всего настроить синхронизацию при рендеринге JavaScript на холсте HTML5.
Я использую установку интегратора Эйлера для физики, и точность очень важна для этого проекта. Рендеринг очень голый
Мой вопрос в том, как лучше всего настроить время для всего этого.
Прямо сейчас у меня есть:
- Физика и другая логика, работающая в функции, которая зацикливается с использованием setTimeout() с фиксированным временным шагом.
- Рендеринг в другой функции, которая зацикливается с использованием вызова requestAnimationFrame() (гибкий временной шаг)
Эти два цикла выполняются как бы одновременно (я знаю, что JavaScript на самом деле не поддерживает потоки без веб-воркеров), но я не хочу, чтобы рендеринг (в настоящее время работающий с гораздо более высоким FPS, чем необходимо) без необходимости «воровал» циклы ЦП у симуляция физики, если вы понимаете, о чем я.
Учитывая, что точность физики здесь наиболее важна, как бы вы порекомендовали настроить систему хронометража? (Возможно, здесь было бы полезно использовать Web Workers, но я не видел, чтобы это использовалось в других движках)
Спасибо!