![]() |
opengl nur in panel
hab ne vcl anwendung und will nur auf einem panel (nicht der ganzen form) opengl nutzen. geht das? wie?
|
Re: opengl nur in panel
Ja, klar geht das. Mache das z.Zt. auch. Eigentlich ist das garkeine besondere Sache. Du must einfach statt des Handles des Forms, das Handle des Panels sowie dessen Grösseninformationen verwenden. Ich hab mir dazu eine Klasse geschrieben (welche aber noch nicht fertig ist), die die OpenGL-Aktivitäten übernimmt. Alle zu rendernden statischen Elemente werden innerhalb dieser Klasse erledigt. Alle dynamischen in einem CallBackEvent im Form. Bei mir reicht es, dass die Inhalte bei OnIdle gerendert werden (2D / CAD-Zeichnung) in Spielen würde ich einen Timer (DX-Timer), QueryPerformanceCounter oder Thread verwenden.
Hier im Groben, wie es bei mir klappt. Form.Create...
Code:
Im OnIdle wird hier gerendert...
FOpenGL:= TOpenGL.Create(pView.Handle, OpenGLRenderCallBack);
Application.OnIdle:= ApplicationEventIdle;
Code:
Der Konstructor meiner Klasse...
FOpenGL.Render;
Code:
Aber auch hier bei mir gibt's noch viele "todo's". :wink:
constructor TOpenGL.Create(WndHND: THandle; RenderCallBack: TNotifyEvent);
begin inherited Create; FRenderCallBack:= RenderCallBack; FWnd:= WndHND; FDC := GetDC(FWnd); SetupPixelFormat; FRC := wglCreateContext(FDC); wglMakeCurrent(FDC, FRC); glEnable(GL_DEPTH_TEST); glLoadIdentity; glEnable(GL_CULL_FACE); glCullFace(GL_BACK); end; Grüsse! |
Re: opengl nur in panel
ok, hatte nur das handle geändert, nicht die größe. das klappte dann nicht so ganz. werde es aber nochmal probieren
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:26 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