![]() |
![]() |
|
![]() |
![]() |
|
Home Cockpit - Das Forum für die "Bastler" Cockpitbauer tauschen Pläne, Erfahrungen, Meinungen über den Bau von Homecockpits aus... |
|
Themen-Optionen | Ansicht |
![]() |
#13 | |
Elite
![]() Registriert seit: 18.01.2000
Alter: 51
Beiträge: 1.264
|
![]() Hallo Phil,
> Was ich noch nicht verstehe ist: wie kriege > ich Delphi dazu, OpenGL zu benutzen? > Also welche zeilen muss ich schreiben damit das genommen > wird und wie geht es dann weiter, Genau das nimmt dir z.B. die cgLib von www.delphi3.net ab. Ich vermute, daß deren aktueller Nachfolger, DOT, das genau so macht. Konkret passiert folgendes: standardmäßig ist das Hauptfenster einer Applikation ein Nachfolger der Klasse TForm. In cgLib für Delphi wird das durch TcgForm ersetzt. TcgForm ist eine Klasse, die mit TForm identisch ist, aber beim Initialisieren den OpenGL- spezifischen Code hinzufügt. Das ist Systemprogrammierung, die dich nicht zu interessieren braucht (Stichwort: Pixel Format Descriptors) und die deswegen komplett in der Klasse TcgForm versteckt wird. Bei DOT wird es ähnlich sein. Alles, was du als Programmierer tun muß, ist TFlightInstrumentsForm = class(TForm) durch TFlightInstrumentsForm = class(TCGForm) zu ersetzen. Dann fehlt nur die Initialisierung von OpenGL. Bei cgLib wird das durch den Befehl "InitGL" erledigt, der in der Standard- Routine "FormCreate" aufgerufen wird. (FormCreate wird von Delphi ja immer dann erzeugt, wenn du bei TForm / TcgForm das Event "OnCreate" definierst.) Die komplette Initialisierung von OpenGL sieht bei mir so aus: // OpenGL initializations InitGL; // this is specific to the Delphi OpenGL headers. // OpenGL initialization code concering 2D projections glLoadIdentity(); glViewport(0, 0, ClientWidth, ClientHeight); glMatrixMode(GL_MODELVIEW); glOrtho(0, 1.0*displaySize, 0, 1.0*displaySize , -1, 1); Das ist alles. glLoadIdentify setzt das Koordinatensystem zurück, glViewport definiert, in welchem Bereich von deinem Fenster zu zeichnen willst, und der Rest definiert Kamera- position und 2D-Koordinatensystem mit dem Größenbereich x = 0..displaySize, y = 0..displaySize Fertig. ![]() > kann ich dann die OpenGL-befehle einfach so hinschreiben > oder müssen die noch "Delphisiert" werden? Das ist das Schöne. Wenn du Delphi erst einmal initialisiert hast, dann kannst du alle Delphi-Befehle auf allen Systemen und Sprachen identisch verwenden. Da muß nichts angepasst werden. Das ganze sieht dann z.B. so aus, am Beispiel des PLIs, der anzeigt, bei welchem Pitch-Winkel der Stall einsetzen würde (B747-400 PFD): Zitat:
am Anfang werden nur Linien (GL_LINES) gezeichnet. glVertex2f (2f = 2 Floating Point Numbers) sind einfach Vektoren, die Anfangs- und Endpunkte jeweils einer Linie angeben. Das Ganze wird in Gelb (glColor3f(1,1,0) mit RGB = 1,1,0) gezeichnet. Viele Grüße, Markus
____________________________________
WinPS1 - Aerowinx PS1.3 als echte Windows-Applikation |
|
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|