Je größer die FPS sind, desto niedriger springt man:
ohne das Infofeld sind es bei mir ca. 1500(ca. 8 Pixel Sprunghöhe),mit nur 1250 FPS(ca. 20 Pixel)
Das ergibt folgende Möglichkeiten:
1. das TimeBased Movement ist nicht korrekt umgesetzt
2. der Zeitgeber ist zu ungenau:
Wenn der Timer wie z.B. bei GetTickCount() keine Float-Genauigkeit hat,wird die Zeitdifferenz bei > 1000 FPS relativ oft gleich 0 sein (= keine Bewegung, wodurch die Sprunghöhe abnimmt)
In diesem Fall gibt es eine einfache Lösung: V-Sync
Die Unterschiede zwischen
OpenGL und Direct3D lassen sich somit auf verschieden Weisen erklären:
1. Der
OpenGL-Treiber ist auf den meisten Systemen langsamer als der Direct3D-Treiber (=Sprunghöhe steigt,da FPS sinken)
2. durch Direct3D können sich Ungenauigkeiten ergeben,da dieses bei der Initialisierung automatisch die Float-Genauigkeit runtersetzt