Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 5.230 pregleda

Najnovija ↓

Opengl na odredjenom delu forme 17.09.2006. u 09:27 · pre 244 meseca #1
Kako da opengl crta recimo na panelu ili nekom odredjenom delu forme a bez koriscenja 3rd party komponenti?
Re: Opengl na odredjenom delu forme 20.09.2006. u 11:57 · pre 244 meseca #2
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
Potpis
SERVIA NOSTRUM REGNUM!
Re: Opengl na odredjenom delu forme 22.10.2006. u 13:08 · pre 243 meseca #3
Ovo ne radi vec samo bude resize. Znaci kako da mi rendering context ne bude canvas forme vec recimo panel ili nesto drugo.
Re: Opengl na odredjenom delu forme 22.10.2006. u 23:00 · pre 243 meseca #4
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);
Re: Opengl na odredjenom delu forme 26.10.2006. u 13:40 · pre 243 meseca #6
Vrlo jednostavno. Postavi ClearColor na boju forme, i kad god budes brisao RT, boja brisanja ce biti boja forme.
Potpis
Play Store
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme