GLBasic forum

Other languages => GLBasic - de => Topic started by: S.O.P.M. on 2007-Jun-06

Title: Zeit messen
Post by: S.O.P.M. on 2007-Jun-06
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.

Code (glbasic) Select
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?
Title: Zeit messen
Post by: mull on 2007-Jun-06
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
Title: Zeit messen
Post by: S.O.P.M. on 2007-Jun-06
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!?
Title: Zeit messen
Post by: mull on 2007-Jun-07
Nimm  GETTIMERALL()

if  GETTIMERALL() - t  >= 1000 // 1 Sek.
   Bla Bla
   t =  GETTIMERALL()
endif
Title: Zeit messen
Post by: Antidote on 2007-Jun-07
oT:
@mull
Mit Deinen Rechnerspecs bist Du ja echt gut dabei ;)
Title: Zeit messen
Post by: mull on 2007-Jun-07
Ja Danke und hab bei GLB nur 60 FPS.
Title: Zeit messen
Post by: S.O.P.M. on 2007-Jun-07
Das liegt an Vista :D
Title: Zeit messen
Post by: Schranz0r on 2007-Jun-07
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.
Title: Zeit messen
Post by: mull on 2007-Jun-07
@Schranz0r

Vielleicht hast du ja recht mit dem Vsync, aber ich weiß nicht wie man es umstellt. ?
Title: Zeit messen
Post by: Schranz0r on 2007-Jun-07
gute frage, gibts bei der Karte kein Kontrollcenter?
Title: Zeit messen
Post by: Kitty Hello on 2007-Jun-08
Rechte MAustaste auf den Desktop, dann "Eigenschaften", dort bei Einstellungen/Erweitert irgendwo?