Il y a au moins deux façons de le faire:
Le premier est celui que d'autres ont mentionné ici avant moi.
Je pense que c'est le plus simple et le moyen préféré. Vous avez juste à garder une trace de
- cn: compteur de nombre d'images que vous avez rendus
- time_start: le temps depuis que vous avez commencé à compter
- time_now: à l'heure actuelle
Le calcul de l'ips dans ce cas est aussi simple que l'évaluation de cette formule:
- FPS = cn / (time_now - time_start).
Puis il y a l'uber cool manière que vous aimeriez l'utiliser un jour:
Disons que vous avez " je " les cadres à prendre en compte. Je vais utiliser cette notation: f[0], f[1],..., f[i-1] pour décrire combien de temps il a fallu pour le rendu de l'image 0, l'image 1, ..., cadre (i-1) respectivement.
Example where i = 3
|f[0] |f[1] |f[2] |
+----------+-------------+-------+------> time
Ensuite, la définition mathématique de fps après je les cadres seraient
(1) fps[i] = i / (f[0] + ... + f[i-1])
Et la même formule, mais en ne considérant i-1 trames.
(2) fps[i-1] = (i-1) / (f[0] + ... + f[i-2])
Maintenant, le truc ici est de modifier la partie droite de la formule (1), de telle sorte qu'il contiendra la partie droite de la formule (2) et de la remplacer pour la gauche.
Comme (vous devriez y voir plus clair 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)
Ainsi, selon cette formule (mes calculs découlant de compétences sont un peu rouillé), pour calculer le nouveau fps vous devez savoir que le fps à partir de l'image précédente, la durée qu'il a fallu pour l'affichage de la dernière image et le nombre d'images que vous avez rendus.