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

Aktuelle Zeit: Fr Jul 18, 2025 08:30

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 09, 2008 19:54 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
1. Du hast done:=false vergessen
2. Deine Messmethode ist ungünstig. Dazu haben wir einige threads z.B. viewtopic.php?t=7574

Meine Lieblingsmethode für Spiele mit time based movement(aus dem Gedächtnis, kann also kleinere Fehler haben)
Code:
  1. var LastTick:int64;//global
  2.  
  3. procedure OnIdle
  4. var Now:int64;
  5.       DeltaT:real;
  6. begin
  7.   Done:=false;
  8.   Now:=QueryPerformanceCounter;
  9.   DeltaT:=(Now-LastTick)/Freqenz;
  10.   if DeltaT>0.1 then DeltaT:=0.1;
  11.   if DeltaT<=0.005 then
  12.    begin
  13.     sleep(1);//Schläft zwar deutlich länger als eine ms, reduziert aber die CPU auslastung auf rechnern die schnell genug sind.
  14.     exit;
  15.    end;
  16.   LastTick:=Now;
  17.   Move(DeltaT);
  18.   Render;
  19. end;


Eigenschaften:
1. Timebased movement
2. Misst die komplette Zeit zwischen zwei renders, also auch wenn andere Anwendungen zeit fressen.
3. Bei unter 10 fps wird das Spiel langsamer, da zu große DeltaTs bei vielen Spielen zu Problemen führen. z.B. wenn keine kontinuierliche Kollisionskontrolle implementiert ist. Hier ist ein DeltaT maximal 100ms.
4. Frameratenbegrenzer, theoretisch auf 200fps, praktisch wohl auf etwas weniger. Wenn der Rechner schneller ist, dann geht durch das sleep(1) die CPU-Auslastung herunter
5. Das Spiel pausiert automatisch wenn ein Menü (TMainMenu) offen ist, da dann OnIdle nicht mehr aufgerufen wird. Hier ist Begrenzung von DeltaT auf 100ms wieder wichtig, da sonst ein Zeitsprung nach dem schließen des Menüs stattfände.
6. Zeitdifferenz wird als real in der Einheit Sekunden an Move übergeben.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 15 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.018s | 15 Queries | GZIP : On ]