Hallo,
und zwar dachte ich mir, mit Hilfe von GETTIMER() beliebige Zeiten zu messen. Im folgenden Beispiel möchte ich den Wert der Variablen Counter je Sekunde erhöhen. Dazu verwende ich eine zweite Variable ElapsedMSecs, zu der ich die seit dem letzten Aufruf von SHOWSCREEN vergangenen Millisekunden addiere. Sobald deren Wert mindestens 1000 erreicht hat, müsste das ziemlich genau einer Sekunde entsprechen.
WHILE TRUE
INC ElapsedMSecs, GETTIMER()
IF ElapsedMSecs > 999
ElapsedMSecs = 0
INC Counter, 1
ENDIF
// weiterer Code hier...
SHOWSCREEN
WEND
Wenn ich diesen Code in der Praxis verwende, werden mir die Sekunden jedoch deutlich zu schnell gezählt - etwa doppelt so schnell. In meinem Spiel habe ich daher längst eine andere Möglichkeit verwendet, mit der ich Zeit messen kann, die auch sehr genau funktioniert. Dennoch würde mich interessieren, wo hier mein Denkfehler liegen könnte! Hat jemand eine Idee?
Hilfezitat
Gettimer gibt die Zeit seit letztem Aufruf von SHOWSCREEN in 1/1000 sec zurück.
Du vergisst warscheinlich die Zeit die Showscreen braucht.
z.B
Gettimer z.B 0.7
Showscreen braucht z.B 0.5
Dann sind 1.2 Sek. vergangen, gemessen hast du 0.7
QuoteDu vergisst warscheinlich die Zeit die Showscreen braucht.
Jaaa! Das ist es...
Ich habe wohl angenommen, diese Zeit würde mit eingerechnet werden. Darauf bin ich nicht gekommen. Besten Dank!
Damit dieser Code für eine Zeitmessung brauchbar wird, müsste man also diese Zeit noch mit berücksichtigen. Nehmen wir an, ich begrenze die FPS auf 40, dann gehen für den
SHOWSCREEN 25 Millisekunden drauf, die ich dann wahrscheinlich von dem gemessenen Wert bei jedem Schleifendurchlauf abziehen müsste!?
Nimm GETTIMERALL()
if GETTIMERALL() - t >= 1000 // 1 Sek.
Bla Bla
t = GETTIMERALL()
endif
oT:
@mull
Mit Deinen Rechnerspecs bist Du ja echt gut dabei ;)
Ja Danke und hab bei GLB nur 60 FPS.
Das liegt an Vista :D
Quote from: S.O.P.M.Das liegt an Vista :D
Stimmt nicht! ich hab mehr FPS!
Das liegt an seiner GraKa...
Vsync muss auf Off sein.
@Schranz0r
Vielleicht hast du ja recht mit dem Vsync, aber ich weiß nicht wie man es umstellt. ?
gute frage, gibts bei der Karte kein Kontrollcenter?
Rechte MAustaste auf den Desktop, dann "Eigenschaften", dort bei Einstellungen/Erweitert irgendwo?