![]() |
OpenGL-Komponente
Servus,
nachdem ich die ganzen tollen Tutorials gewälzt habe (manche davon sind wirklich gut) wie man OpenGL unter Delphi initialisiert ist mir aufgefallen, daß die sich alle nur auf ein komplettes Fenster beziehen. Ich bräuchte aber sowas wie ein OpenGL-Panel und davon gleich 3 Stück... Ich habe mir auch GLScene angeschaut aber für meine Zwecke als nicht verwendbar gefunden, da es doch mehr ne SceneGraph API als ne Rendering API ist. Also selber schreiben. Auch hier wieder viele Tuts gewälzt und letztlich zu der Ansicht gekommen, daß ne Ableitung von TWinControl am sinnvollsten ist. Since so well... Jetzt wollte ich eine Property setzen, die mir einstellt ob ich DoubleBuffering oder nicht habe. Also folgenden Code produziert:
Code:
Da ich DoubleBuffering standardmäßig dabei haben will, einmal den default-Wert auf true gesetzt und noch folgendes produziert:
type
TOGLPanel = class(TWinControl) private { Private-Deklarationen } myDC : HDC; myRC : HGLRC; FDoubleBuffer: boolean; procedure setDoubleBuffer(value: boolean); protected { Protected-Deklarationen } public { Public-Deklarationen } constructor Create(AOwner : TComponent); destructor Destroy(); published { Published-Deklarationen } property DoubleBuffer : boolean read FDoubleBuffer write SetDoubleBuffer default true; end;
Code:
Bei weitem noch nicht vollständig, aber für nen ersten Test sollte es reichen. Wenn ich jetzt ne neue Anwendung mache, da meine Komponente plaziere und mir den OI anschaue, sollte ja eigentlich DoubleBuffer true da stehen. Tut es aber nicht.
constructor TOGLPanel.Create(AOwner : TComponent);
begin inherited Create(AOwner); myDC := getDC(self.Handle); myRC := wglCreateContext(myDC); wglMakeCurrent(myDC,myRC); FDoubleBuffer := true; end; Daraus hab ich jetzt zwei Fragen: 1. Wann wird bei Komponenten der Constructor aufgerufen? Wenn sie auf dem Form plaziert werden oder wenn das Programm ausgeführt wird. 2. Wieso ist dieser blöde DoubleBuffer Wert false ??? Grüße Wolf |
Re: OpenGL-Komponente
Hi,
also das mit dem Constructor funzt so: Er wir 2 mal aufgerufen! Einmal wenn du das teil auf die Form setzt und einmal, wenn du das proggie startest! Es gibt dafür auch ne global varaible, in der der aktuelle modus drin steht... Ich komme bloss nicht auf den Namen.... Das mir dem default kann mit dem OI zusammen hängen... Ab und an muss man die Komponente explizit neu kompilieren (Über den Projektmanager...) Damit das teil manche änderungen erkennt. Das könnte es zumindest sein... cya Corelgott |
Re: OpenGL-Komponente
Zitat:
Danke für den Tip mit dem Constructor. Gruß Wolf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz