Framerate berechnen.



  • Hi,

    Ich würde gern wissen, wie man ab effizientesten die Framerate berechnen kann.

    Danke im voraus 🙂 .

    MfG Unwissender



  • Immer wenn Du Deine Szene renderst, erhöhst Du einen Wert 'framesCount' um 1. Nach jeder Sekunde übergibst Du den Wert 'framesCount' in einen Wert 'frames' und nullst den Wert 'framesCount' wieder. 'frames' hat jetzt immer die aktuellen FPS 🙂



  • es gibt 2 möglichkeiten fps zu berechnen:

    1. mit einem fps-zähler, der pro frame um eins erhöht wird (siehe AK-Joker) und nach jeder sekunde wieder auf null zurückgesetzt wird. man muss nur noch vor dem zurücksetzten den wert speichern, damit man ihn ausgeben kann.

    2. man berechnet die zeitspanne, die man braucht, um einen frame zu berechnen, und berechnet die frames dann hoch auf eine sekunde, indem man den zeitbasiswert pro sekunde (frequenz) durch die vergangene zeitspanne dividiert. etwa so: zeitbasis=millisekunden -> 1 sekunde=1000 millisekunden(zeitbasiswert) -> für einen frame braucht man z.B. 100 ms -> dann dividiert man zeitbasiswert durch die vergangene zeitspanne (1000/100=10 fps) wenn ein frame 5 ms braucht (1000/5=200 fps) wenn ein frame 2000 millisekunden (2sekudnen) braucht (1000/2000=0.5 fps)

    beide verfahren haben vor und nachteile:

    das zweite verfahren hat den vorteil, das man pro frame immer ganz genau weis, wie viele fps man hat. sie ist einfach genauer, weil man sie pro frame berechnet. sie hat aber einen gewaltigen nachteil. wenn die framerate zu groß wird oder der timer zu ungenau ist, dann liefert sie keine brauchbaren ergebnisse mehr. wenn man z.b. 0.00001 sekundden zum berechnen des frames bräuchte, der timer aber nur millisekunden als basiswert hat, dann liefert der timer trotzdem nur 1000 fps , weil er einfach nicht genauer die zeitspanne messen kann (nicht genauer als eine millisekunde).

    beim ersten verfahren hat man dieses problem nicht. da is es egal wie genau der timer ist. selbst wenn man 100000000 fps hat, ist diese methode immer 100% genau, da sie ja die fps zählt und nach jeder sekunden sagt "in der letzten sekunde hatten wir x fps" usw.. aber einen nachteil hat sie auch. wenn man weniger als 1 fps hat, also zum berechnen des frames z.b. 4 sekunden braucht, dann hat man trotzdem nur 1 fps (und nicht 0.25), weil man maximal einmal den zähler erhöhen kann, bis die sekunde vorbei ist.

    was denn nun die bessere variante ist kann man nicht sagen, kommt ganz auf die situation an. aber bei programmen, die in der regel mehr als 10 fps haben (bei denen es recht unwahrscheinlich ist, das man länger braucht als eine sekunde um einen frame zu berechnen, wie z.b. bei spielen), ist die erste variante, die mit dem zähler, besser. zumindest wenn man den zähler auch zukunftssicher machen möchte. oder soll ein heutiges programm, wenn es in x jahren auf einem rechner mit einer geforce9 und nem 100GHz proz läuft, nur 1000 fps anzeigen, obwohl es eigentlich 10000 fps hätte? 🙂


Anmelden zum Antworten