Войти
ПрограммированиеФорумОбщее

Как кошерно считать FPS ? (2 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2
#15
(Правка: 17:41) 17:39, 15 мая 2019

oxotnik
Вместо этого:

total = 0s;

лучше вставить это:
total -= floor(total);

#16
18:20, 15 мая 2019

Mikle
Возможно так и написано. Писал пг памяти, надо глянуть

#17
20:08, 15 мая 2019
total -= 1;
#18
20:27, 15 мая 2019

alexzzzz
floor нужен на случай непредвиденной длительной задержки. Если это отслеживать отдельно - можно и -=1.

#19
(Правка: 22:08) 21:28, 15 мая 2019

Mikle
alexzzzz
Я тоже хотел написать -1. в принципе можно и без дополнительного учета слишком долгой задержки, просто после разглючивания это все быстро заминусуется самостоятельно. Такой прием используется не только для шага в 1 секунду и часто там просто минус интервал. А total периодически сбрасывается в ноль. С floor кошернее, но для произвольного интервала там остаток от деления, хотя можно и само время под интервал в единицу масштабировать.

#20
(Правка: 23:21) 23:16, 15 мая 2019

Таки чекнул код, оказалось все еще проще xD

+ Показать

Но советы клевые, спасиб всем
#21
(Правка: 1:54) 1:50, 16 мая 2019

Про задержку я догадался, но единица полезна, если FPS не просто выводится на экран, а пишется в какую-нибудь таблицу/файл, по которым может строиться график FPS.

Поскольку FPS тут меряется не скользящий средний, а почти честный ― реальное целое количество кадров за одну примерно целую секунду, то будет честнее и нагляднее, если в случае большой задержки в несколько секунд в файл запишется подряд несколько нулей. Ведь секунды были, а кадров реально не было. Только ещё if надо заменить на while.

{
  ++frameCount;
  total += dt;
  while (total >= 1) 
  {
    // <--- тут протоколируем текущее значение frameCount
    total -= 1; 
    frameCount = 0;
  }
};
Страницы: 1 2
ПрограммированиеФорумОбщее