- procedure InitGL(Handle: HDC);
- var pfd: TPixelFormatDescriptor; PixelFormat: Integer;
- begin
- FillChar(pfd, SizeOf(pfd), 0);
- with pfd do
- begin
- nSize := sizeof(pfd);
- nVersion := 1;
- dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
- iPixelType:= PFD_TYPE_RGBA;
- cColorBits:= 16;
- cDepthBits:= 16;
- iLayerType:= PFD_MAIN_PLANE;
- end;
- PixelFormat := ChoosePixelFormat(Handle, @pfd);
- SetPixelFormat(Handle, PixelFormat, @pfd);
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- InitGL(Canvas.Handle);
- hrc := wglCreateContext(Canvas.Handle);
- end;
- procedure TForm1.FormDestroy(Sender: TObject);
- begin
- wglDeleteContext(hrc);
- wglMakeCurrent(0, 0);
- end;
- procedure TForm1.zeichnen;
- begin
- glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
- glBegin(GL_TRIANGLES);
- glColor3f(1,0,0);
- glVertex2f(-0.5,-0.5);
- glColor3f(0,1.0,0);
- glVertex2f(0.5,-0.5);
- glColor3f(0,0,1.0);
- glVertex2f(0.0,0.5);
- glEnd;
- glFlush();
- end;
- procedure TForm1.FormPaint(Sender: TObject);
- begin
- wglMakeCurrent(Canvas.Handle, hrc);
- Zeichnen;
- end;