Es gibt mindestens zwei Möglichkeiten:
Das erste ist das, was andere hier vor mir erwähnt haben. Ich denke, es ist der einfachste und bevorzugte Weg. Sie nur um den Überblick zu behalten
- cn: Zähler für die Anzahl der gerenderten Frames
- time_start: Die Zeit, seit Sie mit dem Zählen begonnen haben
- time_now: die aktuelle Zeit
Die Berechnung der fps ist in diesem Fall so einfach wie die Auswertung dieser Formel:
- FPS = cn / (time_now - time_start).
Dann gibt es die überaus coole Art, die Sie eines Tages nutzen möchten:
Angenommen, Sie müssen 'i'-Frames berücksichtigen. Ich werde diese Notation verwenden: f [0], f [1], ..., f [i-1], um zu beschreiben, wie lange es gedauert hat, Frame 0, Frame 1, ..., Frame (i-1) zu rendern ) beziehungsweise.
Example where i = 3
|f[0] |f[1] |f[2] |
+----------+-------------+-------+------> time
Dann wäre die mathematische Definition von fps nach i Frames
(1) fps[i] = i / (f[0] + ... + f[i-1])
Und die gleiche Formel, aber nur unter Berücksichtigung von i-1-Frames.
(2) fps[i-1] = (i-1) / (f[0] + ... + f[i-2])
Der Trick hier besteht nun darin, die rechte Seite der Formel (1) so zu ändern, dass sie die rechte Seite der Formel (2) enthält, und sie durch die linke Seite zu ersetzen.
So (Sie sollten es klarer sehen, wenn Sie es auf Papier schreiben):
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)
Nach dieser Formel (meine mathematischen Fähigkeiten sind allerdings etwas verrostet) müssen Sie zur Berechnung der neuen fps die fps aus dem vorherigen Frame, die Dauer des Renderns des letzten Frames und die Anzahl der Frames kennen gerendert.