Ограничение частоты кадров в Three.js для повышения производительности, requestAnimationFrame?

21
задан mrdoob 1 July 2012 в 20:04
поделиться

2 ответа

Этот подход может также работать, используя ТРИ. Часы для измерения дельты.

let clock = new THREE.Clock();
let delta = 0;
// 30 fps
let interval = 1 / 30;

function update() {
  requestAnimationFrame(update);
  delta += clock.getDelta();

   if (delta  > interval) {
       // The draw or time dependent code are here
       render();

       delta = delta % interval;
   }
}
4
ответ дан karlos 1 July 2012 в 20:04
поделиться

Объем работы, который должен выполнять ваш процессор и графический процессор, зависит от рабочей нагрузки, и они устанавливают верхний предел плавной частоты кадров.

  • Графический процессор работает в основном линейно и всегда может выталкивать на экран одинаковое количество полигонов.

  • Тем не менее, если вы удвоили количество объектов, ЦП должен приложить больше усилий, чтобы оживить все эти объекты (матричные преобразования и т. Д.). Это зависит от вашей модели мира и другой работы, выполняемой Javascript. Также важны такие условия, как количество видимых объектов.

Для простых моделей, где все многоугольники находятся на экране всегда, тогда оно должно в значительной степени следовать правилу «половина частоты кадров, удвоение объектов». Для сцен, похожих на 3D-шутер, это определенно не так.

6
ответ дан Mikko Ohtamaa 1 July 2012 в 20:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: