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

Aktuelle Zeit: Fr Jul 18, 2025 16:51

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



Ein neues Thema erstellen Auf das Thema antworten  [ 23 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 04, 2008 11:47 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Du sollst (wenn du mit Timer meine Methode meinst) den Timer ja nur nutzen um damit die Renderschleife zu starten, der wird also nur einmal aufgerufen. Du renderst also nicht in einem Timer, sondern stösst bei dessem ersten Aufruf deine Renderschleife an und deaktivierst ihn dann.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 04, 2008 14:14 
Offline
DGL Member

Registriert: Fr Feb 22, 2008 18:00
Beiträge: 10
achso, und wie soll die Renderschleife tun? eine Endlosschleife?
Wie reagiere ich dann auf Systemeingaben zum Bleistift KeyDown/Up Resize Mouse Move etc. bla bla?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 04, 2008 14:26 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Mit Application.Processmessages. Also als Renderschleife eine Endlosschleife (die z.b. auf Game.Quit prüft), da dan Rendern und nach dem Rendern Application.ProcessMessages aufrufen, dann werden alle Windowsbotschaften abgearbeitet.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 04, 2008 14:44 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Es werden nicht alle Botschaften abgearbeitet. Denn wenn jemand im Fenster arbeitet und man versucht dieses Fenster zu schließen, dann werden diese Schließenbotschaften ignoriert. Also sowohl ALT+F4 als auch der Schließenbutton bzw auch der Aufruf von Close aus dem Code werden ignoriert!

Wenn man im Vollbild arbeitet, dann mag das okay sein. Aber in einer anderen Anwendung muss man darauf reagieren und entsprechend die Endlosschleife verlassen bzw per Halt die Anwendung abschließen. Wobei ich persönlich immer für die sanftere Variante bin. Ich steige ja aus meinem Auto auch lieber durch die Tür als durchs Fenster aus. Es sollte ausreichen, wenn man eine Schleifenabbruch Variable im OnClose entsprechend setzt damit die Endlosschleife abgebrochen wird. Dann sollte sich die Anwendung ganz normal beenden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 06, 2008 14:47 
Offline
DGL Member

Registriert: Fr Feb 22, 2008 18:00
Beiträge: 10
Also prinzipiell folgender aufbau:

OnCreate ein Timer der eine RenderSchleife die auf eine bestimmte boolsche prüft, oder zwei, zum beispiel Close und GameOver oder wat weiss ich.
Dann im OnClose ereignis die Close = true setzen.
Und innerhalb der Schleife (wo auch immer) ein Application.processmessages. Fehlt da noch was?

Schliesst das dann das "Lagg" problem aus? oder is das nur ein Tropfen auf dem heissen Stein? (bin grad an nem Schul PC ^^ kein Delphi hier zum testen xD)

kThx bye!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 28, 2008 22:26 
Offline
DGL Member

Registriert: Mo Aug 15, 2005 19:29
Beiträge: 38
Hallo, wollte mal fragen, ob das Problem nun bei dir gelöst ist? Bei mir ist das Problem ebenfalls (allerdings in Fullscreen). Ich merke auch immer deutliche Hänger.

Aber wäre der Timer nicht sinnlos? Könnte man nicht einfach nur eine Procedure schreiben, da ne Endlosschleifen reinpacken und in die Endlosschleife den ganzen Render-Kram? Die Procedure würde dann am Ende von OnCreate aufgerufen werden und die Endlosschleife würde rennen. Für was der Timer?


gruß


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 28, 2008 22:38 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Der Timer stösst die Renderschleife ja nur an, ausserdem sollte man dort auch die Daten laden, denn dann kann man schön einen Ladefortschrittsschirm zeigen. Wenn man das alles in OnCreate packt, kann man noch nichts rendern (da die Form ja nicht sichtbar ist) und auch keinen Ladeschirm o.ä. anzeigen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 29, 2008 08:32 
Offline
DGL Member

Registriert: Mo Aug 15, 2005 19:29
Beiträge: 38
Ah ok. Das macht Sinn, dankeschön :-) Gleich mal ausprobieren.



Edit: Ok, ist nun deutlich flüssiger (zwar immernoch kleine Hänger drin, aber ich denke eher dass das an meinem schrottigen Grafikchip im Notebook liegt ;-)). Aber den extremen FPS-Verlust beim anzeigen eines (mit OpenGL gezeichneten) Fensters ist immernoch da. Hmhm, das lag dann wohl nicht daran. Naja, mal schaun ;) Dankeschön erstmal..


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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.007s | 15 Queries | GZIP : On ]