Hi Zusammen, da ich seid kurzem in C++ eingestiegen bin, schreibe ich gerade ein Spiel in C++ mit SDL und openGL.
Funktioniert schon alles ganz gut, nur hab ich das Problem, dass meine Framerate abhängig davon ist, wie schnell die Hauptschleife (Input, logic und renderingteil) durchlaufen wird. Das hat zur Folge, dass der Spielablauf auf verschiedenen Rechnern verschieden schnell ist.
Ich hab nun versucht die Framerate auf ein Festes Limit zu zwingen, indem ich die gesamte Schleife übersprungen hab, wenn das Limit überstiegen wurde, da ich mir nicht ganz vorstellen kann, wie ich die Bewegungen in Abhängigkeit von der Framerate berechnen kann.
Hier ein Stück code dazu zur Veranschaulichung:
Jetzt habe ich aber das Problem, dass das Spiel immer kurz stehen bleibt, sobald die ausgerechnete Framerate (frames/(clock()/CLOCKS_PER_SEC))
den von mir in frameRate festgelegten Wert 60 übersteigt.
Weis vielleicht jemand, wie ich die Framerate limitieren, und doch den flüssigen Ablauf beibehalten kann?
Gruß,
X0R0N
Funktioniert schon alles ganz gut, nur hab ich das Problem, dass meine Framerate abhängig davon ist, wie schnell die Hauptschleife (Input, logic und renderingteil) durchlaufen wird. Das hat zur Folge, dass der Spielablauf auf verschiedenen Rechnern verschieden schnell ist.
Ich hab nun versucht die Framerate auf ein Festes Limit zu zwingen, indem ich die gesamte Schleife übersprungen hab, wenn das Limit überstiegen wurde, da ich mir nicht ganz vorstellen kann, wie ich die Bewegungen in Abhängigkeit von der Framerate berechnen kann.
Hier ein Stück code dazu zur Veranschaulichung:
Code:
#include <time.h>
int frames = 0;
int frameRate = 60;
if( frames/(clock()/CLOCKS_PER_SEC) <= frameRate)
{
frames++;
//INPUT
...
//LOGIC
...
//RENDERING
...
}
den von mir in frameRate festgelegten Wert 60 übersteigt.
Weis vielleicht jemand, wie ich die Framerate limitieren, und doch den flüssigen Ablauf beibehalten kann?
Gruß,
X0R0N