Странное поведение с Google Chrome и FPS

Я закодировал небольшой движок для отображения 5 спрайтов с использованием javascript в Canvas2D. Все работает отлично и полностью оптимизировано.

FPS колеблется между 30 и 60 годами, но интересно то, что он говорит о постоянной скорости 60 кадров в секунду, когда открыта консоль javascript google!

Любое другое тело испытывает это?

n.b. Я использую requestAnimationFrame

Edit:

Пример: http://jsfiddle.net/jrPNy/1

Играйте со словом "Частицы", чтобы ваши fps составляли около 40-50. Затем откройте консоль, и она повысится до 60 кадров в секунду. (Chrome 21.0.1180.83)

Ответы

Ответ 1

Как автор вопроса заметил в комментарии, это связано с видимой областью холста. Открытие консоли уменьшает высоту области просмотра, которая на дисплее нормального размера означает, что рендеринга будет меньше. 60 FPS - это мягкий предел, заданный частотой обновления дисплея; делать больше кадров, чем это не имеет смысла, поскольку невозможно отображать более 60 кадров в секунду на обычном мониторе.

Я тестировал это на своей машине, уменьшая скорость процессора, так что я не всегда получаю 60FPS. В приведенном примере Fiddle у меня было около 24FPS в обычном режиме. Открытие консоли уменьшило видимый холст примерно до 60% от его первоначального размера, а FPS увеличился до 30 в среднем. Изменение размера Консоли повлияло бы на FPS соответственно: только на 10% видимого холста, FPS покачивался около 42 и с очень маленькой консолью и всем видимым холстом FPS немного по сравнению с исходным значением, до 23. Увеличение Скорость процессора привела к FPS до 60, независимо от состояния Консоли.

Теперь, учитывая, что JavaScript, который генерирует экран, все еще работает, независимо от того, какая часть холста видна, то, что влияет на необходимую вычислительную мощность, - это фактическая рендеринг холста и способ компоновки изображения холста на остальную часть HTML, в окне браузера и, наконец, на экран. Все больше и больше этой работы перемещается на GPU, поэтому, когда каждый этап процесса компоновки будет выполнен в OpenGL, FPS всегда должен быть максимальным.

Ответ 2

Я испытал то же самое с хром на моем macbook. Похоже, что док-станция osx приводит к замедлению частоты кадров, когда вы открываете консоль, окно просмотра удаляется достаточно далеко от док-станции для частоты кадров, чтобы вернуться обратно до 60 кадров в секунду. Если вы сдвинете окно с док-станции, частота кадров повысится. Вы можете иметь полноэкранный режим на 60 кадров в секунду, если консоль не открыта, если вы сделаете автопорт с док-станцией.

Ответ 3

Google chrome использует vsync, что означает, что он ограничит FPS вашим экраном FPS, большинство экранов - 60 FPS, поэтому go'r google будет соответствовать этому, если это возможно, но не будет превышать его. Может быть, программа для удаления vsync, но я знаю, что драйверы Nvidia могут контролировать это, но для этого вам понадобится GTX 610 или hight для этого.