Il existe au moins deux façons de procéder:
Le premier est celui que d'autres ont mentionné ici avant moi. Je pense que c'est le moyen le plus simple et préféré. Vous juste pour garder une trace de
- cn: compteur du nombre d'images que vous avez rendues
- time_start: le temps depuis que vous avez commencé à compter
- time_now: l'heure actuelle
Calculer les fps dans ce cas est aussi simple que d'évaluer cette formule:
- FPS = cn / (time_now - time_start).
Ensuite, il y a la manière super cool que vous aimeriez utiliser un jour:
Disons que vous avez des cadres «i» à considérer. J'utiliserai cette notation: f [0], f [1], ..., f [i-1] pour décrire combien de temps il a fallu pour rendre l'image 0, l'image 1, ..., l'image (i-1 ) respectivement.
Example where i = 3
|f[0] |f[1] |f[2] |
+----------+-------------+-------+------> time
Ensuite, la définition mathématique de fps après i images serait
(1) fps[i] = i / (f[0] + ... + f[i-1])
Et la même formule mais en ne considérant que les cadres i-1.
(2) fps[i-1] = (i-1) / (f[0] + ... + f[i-2])
Maintenant, l'astuce ici est de modifier le côté droit de la formule (1) de telle sorte qu'il contienne le côté droit de la formule (2) et de le remplacer par le côté gauche.
Comme ça (vous devriez le voir plus clairement si vous l'écrivez sur un papier):
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)
Donc, selon cette formule (mes compétences en calcul mathématique sont un peu rouillées cependant), pour calculer les nouveaux fps, vous devez connaître les fps de l'image précédente, la durée qu'il a fallu pour rendre la dernière image et le nombre d'images que vous avez rendu.