Bunu yapmanın en az iki yolu vardır:
Birincisi, burada benden önce diğerlerinin bahsettiği. Bence en basit ve tercih edilen yol bu. Sadece takip etmek için
- cn: oluşturduğunuz karenin sayacı
- time_start: saymaya başladığınızdan beri geçen süre
- time_now: şimdiki zaman
Bu durumda fps'yi hesaplamak, şu formülü değerlendirmek kadar basittir:
- FPS = cn / (time_now - zaman_başlangıç).
Sonra bir gün kullanmak isteyebileceğiniz harika bir yol var:
Diyelim ki dikkate almanız gereken 'i' çerçeveleriniz var. Şu gösterimi kullanacağım: f [0], f [1], ..., f [i-1], çerçeve 0, çerçeve 1, ..., çerçeve (i-1) oluşturmanın ne kadar sürdüğünü açıklamak için ) sırasıyla.
Example where i = 3
|f[0] |f[1] |f[2] |
+----------+-------------+-------+------> time
Ardından, i karelerinden sonra fps'nin matematiksel tanımı
(1) fps[i] = i / (f[0] + ... + f[i-1])
Ve aynı formül, ancak yalnızca i-1 kareleri dikkate alındığında.
(2) fps[i-1] = (i-1) / (f[0] + ... + f[i-2])
Şimdi buradaki hile, formül (1) 'in sağ tarafını, formül (2)' nin sağ tarafını içerecek ve sol tarafının yerine koyacak şekilde değiştirmektir.
Öyle (bir kağıda yazarsanız daha net görmelisiniz):
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)
Dolayısıyla bu formüle göre (matematiksel türetme becerim biraz paslanmış olsa da), önceki kareden fps'yi bilmeniz gereken yeni fps'yi, son kareyi oluşturmak için geçen süreyi ve kare sayısını hesaplamak için işlendi.