Es gäbe für dich da vielleicht noch eine zweite Möglichkeit ... Zähl doch einfach Takte
Start:
- Frame# = 0
- FirstFrame = GetTickCount
- Auszählen, wie weit Du in 100ms Zählen kannst (Int64)
Für jedes Frame:
- GetTickCount - Frame# / WishFPS --> Aktueller Offset des Frames
- Wenn Offset mehr als 2 Frames zu früh: Sleep(50), IncsPerSec * 1.1
- Wenn Offset weniger als zwei Frame zu früh: Zählschleife bis IncsPerSec auf FPS-Zahl umgerechnet
- Wenn Frame mehr als halbe FPS-Zeit zu spät, dann IncsPerSec * 0.9
- Wenn IncsPerSec < 10 : IncsPerSec = 10
Der Algo adaptiert sich automatisch an die aktullen Verhältnisse und frisst auf schnellen Prozessoren nicht die volle Bandbreite, wenn man insgesamt den Algo darauf trimmt, dss er die Delay-Zeit zu kurz bestimmt und damit das Sleep(50) erreicht. Auf langsamen Prozessoren zieht dieser Algo gar keine Rechenzeit, da diese höchst wahrscheinlich meist im Rückstand sein werden.
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.