- var
- Form1: TForm1;
- GLContext: HGLRC; //Das Rendering Context
- implementation
- {$R *.dfm}
- procedure Init_OpenGL;
- var
- pfd: PixelFormatdescriptor;
- PixelFormat: TGLUint;
- begin
- //PixelFormat
- with pfd do
- begin
- nSize:= SizeOf( PIXELFORMATDESCRIPTOR );
- nVersion:= 1;
- dwFlags:= PFD_DRAW_TO_WINDOW
- or PFD_SUPPORT_OPENGL
- or PFD_DOUBLEBUFFER;
- iPixelType:= PFD_TYPE_RGBA;
- cColorBits:= 16; //Farbtiefe
- cRedBits:= 0;
- cRedShift:= 0;
- cGreenBits:= 0;
- cBlueBits:= 0;
- cBlueShift:= 0;
- cAlphaBits:= 0;
- cAlphaShift:= 0;
- cAccumBits:= 0; //Accumulation Buffer
- cAccumRedBits:= 0;
- cAccumGreenBits:= 0;
- cAccumBlueBits:= 0;
- cAccumAlphaBits:= 0;
- cDepthBits:= 16; //Z-Buffer Tiefe
- cStencilBits:= 0; //Stencil Buffer
- cAuxBuffers:= 0;
- iLayerType:= PFD_MAIN_PLANE;
- bReserved:= 0;
- dwLayerMask:= 0;
- dwVisibleMask:= 0;
- dwDamageMask:= 0
- end;
- //Pixel Format setzten
- PixelFormat := ChoosePixelFormat(Form1.Canvas.Handle, @pfd);
- if (PixelFormat=0) then
- MessageDlg('Es konnte kein passendes PixelFormat gefunden werden.', mtError, [mbOk], 0);
- if (not Windows.SetPixelFormat(Form1.Canvas.Handle,PixelFormat,@pfd)) then
- MessageDlg('PixelFormat konnte nicht gesetzt werden.', mtError, [mbOk], 0);
- //DeviceContext erstellen:
- GLContext := 0;
- //Rendering Context initialisieren
- GLContext := wglCreateContext(Form1.Canvas.Handle);
- if (GLContext=0) then
- begin
- MessageDlg('Rendering Context kann nicht erstellt werden.', mtError, [mbOk], 0);
- Halt(100)
- end;
- if (not wglMakeCurrent(Form1.Canvas.Handle, GLContext)) then
- begin
- MessageDlg('Rendering Context kann nicht aktiviert werden.', mtError, [mbOk], 0);
- Halt(100)
- end;
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- Init_OpenGL;
- glClearColor(0.0, 0.0, 0.0, 0.0); //Hintergrundfarbe
- glEnable(GL_DEPTH_TEST); //Tiefenpuffer aktivieren
- glEnable(GL_CULL_FACE); //Backface Culling aktivieren
- glShadeModel(GL_SMOOTH)
- end;