Die erfolgreichsten Wettbewerb Game - Engines wie id Tech
, GoldSrc
, Source
und so ermöglicht Framerate Einschränkungen.
Sie können mit 30, mit 60, mit 99, mit 72, mit 68 usw. spielen. Kurz gesagt, Sie können es begrenzen und die Kappe steuern.
Ich habe mich gefragt, wie ich die Framerate begrenzen kann.
Nicht an Code interessiert, sondern an Theorie.
frame-rate
Ruckmodus
quelle
quelle
Antworten:
Die Theorie lautet: Überprüfen Sie, wann Sie das letzte Mal einen Frame gerendert haben und ob es noch nicht an der Zeit ist, einen weiteren Frame zu zeichnen.
quelle
Angenommen, Sie möchten Ihre Framerate auf 60 fps beschränken. Dies bedeutet, dass jeder Frame eine Renderzeit von 1 / 60s = 16,67 ms (gerundet) hat.
Um Ihre Framerate zu begrenzen, überprüfen Sie einfach die Zeit zu Beginn Ihrer Spielschleife und können sie dann mit der Zeit am Ende der Spielschleife vergleichen: Wenn die Differenz weniger als 16,67 ms beträgt, sollten Sie für diese Zeit stehen bleiben.
Eine Möglichkeit, dies zu tun, besteht darin, Folgendes zu verwenden:
Da
sleep(x)
der Thread jedoch für ein Minimum vonx
Millisekunden ausgegeben wird, wissen Sie nicht sicher, ob Sie die Kontrolle in der Zeit zurückerhalten werden.Ein besserer Weg wäre zu verwenden:
Dies gibt den Thread zurück und fordert die Kontrolle so schnell wie möglich zurück.
Eine andere Lösung besteht darin, nur eine ausgelastete Warteschleife zu haben. Dies gibt Ihnen die beste Kontrolle, nutzt aber die CPU unnötig.
Denken Sie daran, dass der OS-Scheduler Ihrem Thread jederzeit die Kontrolle entziehen kann. Seien Sie also auf Schwankungen vorbereitet.
quelle