[ Trodmi @ 17.09.2006. 08:27 ] @
Kako da opengl crta recimo na panelu ili nekom odredjenom delu forme a bez koriscenja 3rd party komponenti? |
[ Trodmi @ 17.09.2006. 08:27 ] @
[ IvanBeograd @ 20.09.2006. 10:57 ] @
Mozes da postavis glViewport na panel.
npr da kazes glViewport(0,0,panel.width,panel.heigth). Mada bi ti najlakse bilo da koristis GLScene,potpuno su besplatne,i ima jedna komponenta GLSceneViewer, koju mozes da postavis na panel i preko nje iscratavas to sta ti treba. Poz [ Trodmi @ 22.10.2006. 12:08 ] @
Ovo ne radi vec samo bude resize. Znaci kako da mi rendering context ne bude canvas forme vec recimo panel ili nesto drugo.
[ Almedin @ 22.10.2006. 22:00 ] @
Evo kako ja radim:
Code: procedure SetupGLWindow(AWindow: TWinControl); var DC:HDC; RC:HGLRC; begin DC:=GetDC(AWindow.Handle); SetupPixelFormat(DC); RC:=wglCreateContext(DC); wglMakeCurrent(DC, RC); end; procedure SetupPixelFormat(DC:HDC); const pfd:TPIXELFORMATDESCRIPTOR = ( nSize:sizeof(TPIXELFORMATDESCRIPTOR); // size nVersion:1; // version dwFlags:PFD_SUPPORT_OPENGL or PFD_DRAW_TO_WINDOW or PFD_DOUBLEBUFFER; // support double-buffering iPixelType:PFD_TYPE_RGBA; // color type cColorBits:24; // prefered color depth cRedBits:0; cRedShift:0; // color bits (ignored) cGreenBits:0; cGreenShift:0; cBlueBits:0; cBlueShift:0; cAlphaBits:0; cAlphaShift:0; // no alpha buffer cAccumBits: 0; cAccumRedBits: 0; // no accumulation buffer, cAccumGreenBits: 0; // accum bits (ignored) cAccumBlueBits: 0; cAccumAlphaBits: 0; cDepthBits:24; // depth buffer cStencilBits:0; // no stencil buffer cAuxBuffers:0; // no auxiliary buffers iLayerType:PFD_MAIN_PLANE; // main layer bReserved: 0; dwLayerMask: 0; dwVisibleMask: 0; dwDamageMask: 0; // no layer, visible, damage masks */ ); var pixelFormat:integer; begin pixelFormat := ChoosePixelFormat(DC, @pfd); if (pixelFormat = 0) then begin MessageBox(WindowFromDC(DC), 'ChoosePixelFormat failed.', 'Error', MB_ICONERROR or MB_OK); exit; end; if (SetPixelFormat(DC, pixelFormat, @pfd) <> TRUE) then begin MessageBox(WindowFromDC(DC), 'SetPixelFormat failed.', 'Error', MB_ICONERROR or MB_OK); exit; end; end; i kod kreiranja forme pozoves SetupGLWindow(Panel1); [ Trodmi @ 26.10.2006. 11:29 ] @
All right, a kako sada da mi pozadina bude u boji panela, tj da ne bude crna.
[ Srki_82 @ 26.10.2006. 12:40 ] @
Vrlo jednostavno. Postavi ClearColor na boju forme, i kad god budes brisao RT, boja brisanja ce biti boja forme.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|