Існують як мінімум два способи:
Перший - це той, про кого тут згадувались інші. Я думаю, що це найпростіший і бажаний спосіб. Вам просто слідкувати
- cn: лічильник кількості кадрів, які ви надали
- time_start: час, коли ви почали рахувати
- time_now: поточний час
Розрахунок кадрів в секунду в цьому випадку простий, як і оцінка цієї формули:
- FPS = cn / (time_now - time_start).
Тоді є класний спосіб uber, яким ви хочете скористатися якийсь день:
Скажімо, у вас є "я" кадри для розгляду. Я буду використовувати це позначення: f [0], f [1], ..., f [i-1], щоб описати, скільки часу знадобилося, щоб візуалізувати кадр 0, кадр 1, ..., кадр (i-1 ) відповідно.
Example where i = 3
|f[0] |f[1] |f[2] |
+----------+-------------+-------+------> time
Тоді було б математичне визначення кадрів у кадрі після кадрів i
(1) fps[i] = i / (f[0] + ... + f[i-1])
І та ж формула, але тільки з урахуванням кадру i-1.
(2) fps[i-1] = (i-1) / (f[0] + ... + f[i-2])
Тепер хитрість полягає в тому, щоб змінити праву частину формули (1) таким чином, щоб вона містила праву частину формули (2) і замінила її лівою стороною.
Так (ви повинні побачити це чіткіше, якщо ви пишете це на папері):
fps[i] = i / (f[0] + ... + f[i-1])
= i / ((f[0] + ... + f[i-2]) + f[i-1])
= (i/(i-1)) / ((f[0] + ... + f[i-2])/(i-1) + f[i-1]/(i-1))
= (i/(i-1)) / (1/fps[i-1] + f[i-1]/(i-1))
= ...
= (i*fps[i-1]) / (f[i-1] * fps[i-1] + i - 1)
Отже, згідно з цією формулою (мій навик отримання математики трохи іржавий), щоб обчислити новий кадр в секунду, вам потрібно знати кадр в секунду з попереднього кадру, тривалість, необхідну для відображення останнього кадру, і кількість кадрів, які ви винесено.