Canvas FPS искусственно ограничен до 100fps? - PullRequest
2 голосов
/ 11 сентября 2010

На этой странице , которая подсчитывает количество визуализированных кадров и печатает FPS на холсте, мы видим, что он достигает 100 кадров в секунду, что кажется подозрительным, по крайней мереПочему это так?

<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="utf-8">
  <title>Canvas FPS artificial limiting</title>
 </head>
 <body>
  <canvas id="c" width="320" height="240"></canvas>
  <script>
   var c = document.getElementById('c').getContext('2d'),
    f = 0,
    s = new Date;
   setInterval(function() {
    c.clearRect(0, 0, 320, 240);
    c.fillText(++f / ( ((+new Date) - s) / 1000 ), 8, 16);
   }, 0);
  </script>
 </body>
</html>

В настоящее время у меня проблема с Firefox 4.0b6 и Ubuntu 10.10 beta.

1 Ответ

12 голосов
/ 11 сентября 2010

Я понял! По данным этой страницы:

https://developer.mozilla.org/en/window.setTimeout#Minimum_delay_and_timeout_nesting

setTimeout и setInterval ограничены минимумом 10 мс в Firefox (то есть 100 итераций в секунду), чтобы избежать блокировок и снижения производительности пользовательского интерфейса. Это означает, что значения задержки ниже, чем это, используют вместо 10 мс (до 100 кадров в секунду).

Это не проблема холста; это искусственное ограничение минимальной задержки на таймеры.

Редактировать: дальнейшее чтение предполагает, что Chrome выполняет фиксирование 4 мс, что обеспечивает искусственный предел 250 кадров в секунду для таймеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...