PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : FPS in Java-Applet


DocEW
2003-09-12, 02:43:13
Hi,
ich habe ein kleines Java-Applet, welches runnable ist und ein bißchen was an bewegten Bildern darstellt. ;)
Konkret gibt es n verschiedene Punkte, die dem Mauszeiger hinterher flitzen.
Nun hätte ich gerne eine FPS-Anzeige, also wie viele Bilder pro Sekunde berechnet wurden.
Ich habe sowas noch nie gemacht, also hab ich einfach folgendes ausprobiert:


Es gibt einen FPS-Zähler, der in der paint()-Methode erhöht wird
Es gibt einen Merker, wann zum letzten Mal die FPS gemessen wurden
In der Update()-Methode wird nun geprüft, ob seit der letzten Messung (s.o.) bereits 1 Sekunde vergangen ist. Wenn JA, ist der Inhalt des FPS-Zählers die auszugebende Zahl. Der Zähler wird auf 0 zurück gesetzt und der Merker mittels System.currentTimeMillis() gesetzt


Das blöde ist nur, daß das ganze nit so ganz doll funktioniert. Wenn ich einen Punkt habe, läuft's angeblich so mit 44 fps, was auch gut hinkommt, da ich den Thread zwischendurch (in der run()-Methode des Applets) immer 20ms schlafen lege.
Wenn ich aber z.B. zehn Punkte erzeuge, habe ich auf einmal >55fps! ???
Dabei sind die "Punkte" bloß einfache Objekte und haben keine eigenen Threads oder so.

Mache ich da was grundsätzlich falsch?

ScottManDeath
2003-09-12, 10:01:47
ich würde über 5 bis 10 sekunden die frames zählen und dann den durchschnitt bilden, da die zeitfunktionen im allgemeinen nicht sehr genau sind. ausserdem springt die fps anzeige nicht so schnell umher ;)

DocEW
2003-09-12, 11:09:33
Ja, OK, aber mit 1 Sekunde müßte es ja auch funktionieren. Es springt auch nicht so wahnsinnig... immer so +-3.