Войти
ПрограммированиеТермины

FPS: Frames Per Second (Число кадров в секунду)

FPS (Frames Per Second) — это количество кадров в секунду, которые отрисовывает Ваша игра. Чем это число больше, тем плавнее будет выглядеть анимация в игре.

Описание
Ссылки

Описание

FPS является важнейшим показателем для оценивания производительности графических приложений, а также графических систем (видеокарта + драйвер). Однако, это возможно только при выключенной вертикальной синхронизации (VSync). При включённой вертикальной синхронизации количество FPS не может быть больше частоты вертикальной развёртки монитора (обычно 72, 75, 85, 100 герц), поэтому тестирование со включённой вертикальной синхронизацией всегда некорректно.

Оптимальное значение FPS, видимо, равно значению частоты вертикальной развертки, так как больше кадров приложение всё равно не сможет отрисовать, и в этом случае имеет смысл тратить вычислительные ресурсы системы на другие вещи (увеличить детализацию физики, например). Если же отключить вертикальную синхронизацию в графической системе (в реальном запуске, а не тесте!), на экране появятся некоторые артефакты. См. также про VSync.

При анализе FPS всегда очень важно понимать, что является bottleneck в данном случае. Обычно получается выделить, что ограничивает скорость — CPU или GPU (но далеко не всегда - вполне возможно, в разных местах ограничивает то CPU, то GPU, в пределах одного кадра).

Вечный вопрос — как добиться стабильных FPS. В случае CPU limited это обычно не является проблемой — неравномерный FPS следствие неравномерных вычислений в коде программы. В GPU limited все значительно сложнее. Дело в том, что так как современные карты работают асинхронно с процессором, то драйвер кеширует все команды на отрисовку, в том числе команду на окончание кадра. Таким образом, после этой команды CPU не ждет видеокарту, а продолжает заниматься обсчетом следующего кадра. Это приводит к тому, что в очереди на отрисовку одновременно находятся несколько разных кадров, и когда эта очередь переполняется, процессор долго ждет карточку. Следствие — один кадр (который был занесен в очередь) может быть намного быстрее другого (в котором очередь переполнилась).

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

Один из способов, чаще всего приемлемо работающих на практике - усреднять время кадра по нескольким последним.

Ссылки


Эта проблема не раз обсуждалась на форуме, наиболее эпохально - в комментариях к статье о многопоточности.
http://www.gamedev.ru/forum/?group=10&topic=483
http://www.gamedev.ru/forum/?action=showtopic&group=2&topic=223

Что такое FPS: Frames Per Second (Число кадров в секунду)?

#FPS

29 июля 2005 (Обновление: 13 июня 2009)