Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 15, 2025 18:27

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: WM_TIMER / timing generell
BeitragVerfasst: Mo Okt 25, 2004 16:25 
Offline
DGL Member

Registriert: Mo Aug 02, 2004 18:01
Beiträge: 12
Hallo !

Ich hab ein paar Fragen, wo die Win32 Referenz nicht weiterhilft.

a) Wie viele Timer sind in einer OpenGL-Anwendung sinnvoll ?

b) Wie benütze ich 1x Timer um mehreren Animationen "Zeit zu geben" ?

c) Zum unter b) beschr. Problem : Wie habt ihr das Zeitmessen für bsw. mehrere Einheiten, die sich auf dem Bildschirm bewegen gelöst ?

Eine FOR..TO Schleife die alle Animationen abfragt/die Zeit mißt und ggf. einen frame weiterhüpft ?

Grüße


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 25, 2004 16:43 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
wenn du genaue zeitangaben brauchst, dann nimm gettickcount.
die timerkomponente ist sehr ungenau, ~55 ms.

gettickcount liefert dir eine integer, die die mseks seit booten des computers angibt.

PS: Wer BildSuchet, der findet. das thema gabs schonmal.

_________________
Bild

"User Error. Replace User and hit Continue."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 25, 2004 16:58 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Ich könnte mich täuschen, aber wird GetTickCount nicht auch mit dem Systemzeitgeber hochgezählt, sodass die Auflösung auch nur 55ms beträgt - zumindest unter Win95 und 98 war es, glaube ich, so.
Alternativ kannst du dir auch die WinAPI Funktionen QueryPerformanceCounter und QueryPerformanceFrequency, mit denen sich die Zeit in Prozessor- (oder zumindest Bustaktzyklen) messen lässt, was z.B. zum profilen diverser Funktionen recht praktisch sein kann.

Normalerweise macht man es so, dass nicht eine Einheit alle 0.05 Sekunden um einen konstanten Wert über den Bildschirm bewegt wird. Vielmehr gibt man animierten Einheiten virtuelle Geschwindigkeiten (z.B. Meter pro Sekunde - was auch immer), bewegt wird dann jeden Frame, und zwar in Abhängigkeit der durchschnittlichen Frames pro Sekunde (die Formel lautet dann: v * 1.0 / FpS, oder einfacher v / FpS oder v * AverageFrameTime oder v * LastFrameTime, wobei v die Geschwindigkeit pro Sekunde darstellt, FrameTime hingegen die Zeit in Sekunden, die für einen einzelnen Frame benötigt wird).
Neben der einfacheren Verwaltung hat das Ganze auch den Vorteil, dass es auf schnellen Rechnern automatisch flüssiger läuft, und auf langsamen Rechnern besteht keine Gefahr eines stalls, wenn der Timer öfter aufgerufen wird, als der Rechner die Animationen überhaupt verarbeiten kann.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 25, 2004 17:30 
Offline
DGL Member

Registriert: Mo Aug 02, 2004 18:01
Beiträge: 12
erstmal Danke ! :)

Ja, GetTickCount () habe ich früher schon mal benutzt. Nun schwören die Macher
der OpenGL Einführungen wie NeHe, Sulaco.co.za auf WM_Timer. Deßhalb dachte ich,
GetTickCount wäre irgendwie nicht mehr zeitgemäß ???

GetTickCount() ist auf jeden Fall viel einfacher einzusetzen!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 25, 2004 18:29 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Schau mal im Wiki unter Timebased Movement.

MfG
Flo

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]