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
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:
repeat
DrawScene;
Application.ProcessMessages;
until EndGame;
Application.ProcessMessages sorgt dafür, das nach deinem Rendervorgang alle in der Nachrichtenschleife liegenden Nachrichten abgearbeitet werden.
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.
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.