Ich habe gelesen, dass die Geschwindigkeit von Spielobjekten nicht durch FPS behindert werden sollte, sondern auf der Zeit basieren sollte. Wie kann ich den Aktualisierungs- / Zeichnungscode trennen, um die Leistung zu maximieren, ohne die Zeichnungsrate zu begrenzen, und eine konstante logische Aktualisierungsrate basierend auf der Zeit bereitstellen?
Mein aktueller Pseudocode lautet wie folgt
loop
{
draw();
if (ticksElapsed() > 100)
{
update();
ticks+= ticksElapsed();
}
}
Das Problem ist, dass der Zeichnungscode die Leistung der update () -Rate beeinträchtigt. Und es verbraucht 100% CPU, denn wenn der Schlaf aktiviert wird, werden beide Zeichen- / Logikfunktionen deaktiviert.
Ich verwende auch SDL und es scheint keine vsync-Option zu geben. Ich habe auch von den Begriffen feste und variable Zeitschritte gehört, bin mir aber nicht sicher, wie das mit sleep gemacht werden kann ()