Warum willst du die Framerate der Engine reduzieren? Ich benutz OpenDE, und bei den meisten Physik-Engines ist es am Besten, wenn man die mit fester Stepgröße laufen lässt (60 fps in meinem Fall). Ich mach das ungefähr so (hab den Code gerade nicht zu Hand):
Code:
u32 iDiffTime=<Zeit seit dem letzten Frame>,iTimeBuffer=<Variable für "krumme" Zeitwerte>;
[...]
iTimeBuffer+=iDiffTime;
while (iTimeBuffer>=16) {
<step you physics here>();
iTimeBuffer-=16;
}
Damit krieg ich immer meine 60 fps. Wenn die Engine langsamer rendert, dann werden mehrere Schritte auf einmal ausgeführt, wenn die Engine schneller ist, dann wir ein paarmal kein Physik-Step gemacht. Funktioniert prima. Kannst dir das Ganze in meinem IrrOde Wrapper anschauen, wenn mein Pseudo-Code nicht weiterhilft.