Thema: Delphi opengl nur in panel

Einzelnen Beitrag anzeigen

Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
238 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: opengl nur in panel

  Alt 31. Jul 2004, 16:13
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:
  FOpenGL:= TOpenGL.Create(pView.Handle, OpenGLRenderCallBack);
  Application.OnIdle:= ApplicationEventIdle;
Im OnIdle wird hier gerendert...
Code:
  FOpenGL.Render;
Der Konstructor meiner Klasse...
Code:
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;
Aber auch hier bei mir gibt's noch viele "todo's".

Grüsse!
  Mit Zitat antworten Zitat