Seite 1 von 1

Programm mit konstanter Framerate laufen lassen

Verfasst: 17.08.2010 00:24
von Schoppy
Hi,

bei meinem kleinen Programm habe ich das Problem das es auf meinem Rechner mit ca. 400 FPS läuft
und auf einem anderem schlechteren Rechner mit ca. 80 Frames.

Folgliche ist die bewegung meines meshes viel zu schnell auf meinem Rechner.

Ich denke mal das ein Delay hier nicht die lösung bringt, da ja das gesamte Programm angehalten wird.

Gruss
Schoppy

Re: Programm mit konstanter Framerate laufen lassen

Verfasst: 17.08.2010 00:33
von STARGÅTE
Dieses Problem wirst du immer haben, selbst wenn du es überall mit 60FPS laufen lässt, wird es wieder ein rechner geben, der nur mit 50FPS läuft usw.

Darum sollte man Bewegungen nicht einfach nur mit "Ort+1" darstellen, sondern die Bewegung mit der echten Zeit abstimmen (ElapsedMilliseconds) oder mit den momentanen FPS synkronisieren.

Du kannst aber auch einfach nur die Frame-Rate für WindowedScreens ändern:
SetFrameRate(FrameRate)

Re: Programm mit konstanter Framerate laufen lassen

Verfasst: 17.08.2010 00:50
von Schoppy
Danke für die schnelle Hife.

Langsamer wäre ja nicht schlimm.

Das Programm dürfte halt nur nicht schneller laufen als z.b. 60 FPS.

Das Problem welches ich z.Zt. habe ist das durch den Tastendruck auf der Tastatur die folgende bewegungsaktion etliche male ausgeführt wird.
Die Variabel die den Tastendruck sperrt wird so schnell wieder aufgehoben weil die bedingung hierfür zu schnell erfüllt wird.

Mit SetFrameRate(FrameRate) kann ich nicht arbeiten das es ein Irrlicht Screen ist.

Gruss
Florian

Re: Programm mit konstanter Framerate laufen lassen

Verfasst: 17.08.2010 00:57
von STARGÅTE
Die Variabel die den Tastendruck sperrt wird so schnell wieder aufgehoben weil die bedingung hierfür zu schnell erfüllt wird.
Jo deswegen meinte ich ja, sowas sollte über die Zeit gereget werden.

Du hast n StartZeit = ElapsedMilliseconds()
und prüfst dann ob ob im späteren verlauf ElapsedMilliseconds()-StartZeit < 1000 was einer Sekunde entspricht.
das wäre wie Value + 1 zu machen und den Tastendruck solange zuzulassen wie Value < 100 ist oder so.

Aber mit der echten zeit ist es wirklich immer 1 Sekunde !

Re: Programm mit konstanter Framerate laufen lassen

Verfasst: 18.08.2010 00:28
von Nighthawk
Hi @Schoppy,

oder schau Dir mal das vierte Beispiel des Original Irrlicht SDK´s an.
Da sieht man wie Objekte gleichschnell bewegt werden egal was man für
eine Framerate hat.

Gruß
Nighthawk