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

Aktuelle Zeit: Fr Jul 04, 2025 22:00

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Jan 09, 2003 20:06 
Hallo!

Wenn ich ein Formular als Anwendung habe, wie kann man dann den Messageloop einbauen. Bis jetzt denk ich, dass man nur auf Ereignisse der Steuerelemente reagieren kann.

Es soll darauf hinauslaufen, dass in einem Panel OpenGL gerendert werden soll; natürlich muss das Bild in einer geeigneten Framerate aktualisiert werden. Geht es außer mit Hilfe eines Timer auch, die Aktualisierung in eine solche immer laufende Schleife einzubauen? Oder ist ein Formular dafür nicht geeignet? 8O

Gruß, Martin


Nach oben
  
Mit Zitat antworten  
BeitragVerfasst: Do Jan 09, 2003 20:14 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zitat:
Es soll darauf hinauslaufen, dass in einem Panel OpenGL gerendert werden soll; natürlich muss das Bild in einer geeigneten Framerate aktualisiert werden. Geht es außer mit Hilfe eines Timer auch, die Aktualisierung in eine solche immer laufende Schleife einzubauen? Oder ist ein Formular dafür nicht geeignet?


Wenn du deinem OpenGL-Programm die volle Prozessorzeit zum Rendern zur Verfügung stellen willst, hast du zwei Möglichkeiten in einer Form :

Möglichkeit 1:
Benutze den OnIdle-Event deiner Form mit Done := False und zeichne dort deine Szene.Dieses Ereignis wird permanent aufgerufen.
Zu finden ist das ganze als Ereignis der "ApplicationEvents"-Komponenten auf dem "Zubehör"-Tab.

Möglichkeit 2:
Schreib dir (ähnlich wie bei API) ne Schleife und zwar folgendermaßen :
Code:
  1.  
  2.  
  3. repeat
  4.  
  5. DrawScene;
  6.  
  7. Application.ProcessMessages;
  8.  
  9. until EndGame;
  10.  
  11.  

Application.ProcessMessages sorgt dafür, das nach deinem Rendervorgang alle in der Nachrichtenschleife liegenden Nachrichten abgearbeitet werden.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 09, 2003 20:16 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Eine einfache Methode deine Szene zu aktualisieren ist mittels dem Idle Event deiner Anwendung.
2 Möglichkeiten:
1.ApplicationEvents Komponente(D5: unter zusätzlich) auf das Formular Fallen lassen und das OnIdle Event verwenden.
2. Application.OnIdle selbst überschreiben

P.S.: Warum blickst du nicht in die DGL-VCL Sources, da wird genau so zeugs gemacht.


Zuletzt geändert von Delphic am So Jul 19, 2009 16:31, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Danke
BeitragVerfasst: Do Jan 09, 2003 20:42 
:D Vielen Dank euch beiden


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


Wer ist online?

Mitglieder in diesem Forum: Majestic-12 [Bot] und 8 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 | 15 Queries | GZIP : On ]