OpenGl na Desktopie

0

Witam. Mój problem jest następujący: pisałem kiedyś małe demko w OpenGl (obracający się sześcian). Standardowo jako okna graficznego użyłem komponentu Panel. Później wpadłem na pomysł, że fajnie jak owo demko szalałoby na pulpicie. Problem w tym, iż pomimo pobrania kontekstu pulpitu program wysypywał się komunikatem Access volitation error... Nie wiem gdzie jest błąd. Oto fragment programu gdzie ładuję konteksty:

PROCEDURE TForm1.FormCreate(Sender: TObject);
VAR pfd : TPIXELFORMATDESCRIPTOR;
    pf  : Integer;
BEGIN
  // gdzie chcemy rysowac
  dc:=GetDC(Panel1.Handle);
  // *********************************************
  // powyższą linię zastąpiłem na
  // GetWindowDC(GetDesktopWindow);
  // *********************************************
  // PixelFormat
  pfd.nSize:=sizeof(pfd);
  pfd.nVersion:=1;
  pfd.dwFlags:=PFD_DRAW_TO_WINDOW OR PFD_SUPPORT_OPENGL OR PFD_DOUBLEBUFFER OR 0;
  pfd.iPixelType:=PFD_TYPE_RGBA;      // PFD_TYPE_RGBA OR PFD_TYPEINDEX
  pfd.cColorBits:=16;

  pf :=ChoosePixelFormat(dc, @pfd);   // Returns format that most closely matches above pixel format
  SetPixelFormat(dc, pf, @pfd);

  rc :=wglCreateContext(dc);    // Rendering Context = window-glCreateContext
  wglMakeCurrent(dc,rc);        // Make the DC (Form1) the rendering Context

  // Initialist GL environment variables
  glInit();
END; {TForm1.FormCreate }

Teoretycznie powinno działać. Niestety, teoria i praktyka mijają się. Jak ktoś ma pomysł to poproszę. Z góry dziękuję.

0

jak jestes pewien to glInit(); sprawdz czy czegos nie ladujesz czego nie mozesz z OCX' ow ladowac

a jak nie wiesz albo cos innego to moj schemat wlaczania OCX'a wygladal tak:
nie pobieram pulpitu ;u
wez stworz forme na ktorej bedziesz rysowal i wstaw do strony html

no i zdaje se sprawe ze ty nie uzywasz ocx'ow :U

1 użytkowników online, w tym zalogowanych: 0, gości: 1