unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, OpenGL, StdCtrls, Menus, ExtCtrls,GL; type TVertex = record X, Y, Z: GLFloat; end; TMainForm = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormResize(Sender: TObject); private RC : HGLRC; DC : HDC; procedure glDraw; procedure Idle(Sender: TObject; var Done: Boolean); end; var MainForm: TMainForm; vertex : array[1..3] of TVertex; Indices :array[1..3] of GLInt; implementation {$R *.DFM} procedure SetVertex; begin Vertex[1].x := 15; Vertex[1].y := 10; Vertex[1].z := 1; Vertex[2].x := 20; Vertex[2].y := 10; Vertex[2].z := 1; Vertex[3].x := 16; Vertex[3].y := 8; Vertex[3].z := 1; end; procedure TMainForm.glDraw(); begin glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); glLoadIdentity(); gluLookAt(1,5,1,1,1,0,0,0,3); glVertexPointer(3, GL_FLOAT, 0, @Vertex); glEnableClientState(GL_VERTEX_ARRAY); glBegin(GL_TRIANGLES); glDrawArrays(GL_TRIANGLES,0,3); gLEnd; glDisableClientState(GL_VERTEX_ARRAY); end; procedure glInit(); begin SetVertex; glClearColor(0.0, 0.0, 0.0, 0.0); glShadeModel(GL_SMOOTH); glClearDepth(1.0); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); glEnable(gl_texture_2d); end; procedure TMainForm.FormCreate(Sender: TObject); var pFd : TPIXELFORMATDESCRIPTOR; pF : Integer; begin ShowCursor(true); DC := GetDC(Handle); 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.cColorBits := 32; pF := ChoosePixelFormat(DC, @pFd); SetPixelFormat(DC, pF, @pFd); RC := wglCreateContext(DC); wglMakeCurrent(DC, RC); Resize; Application.OnIdle := Idle; glInit; end; procedure TMainForm.FormDestroy(Sender: TObject); begin wglMakeCurrent(0,0); wglDeleteContext(rc); end; procedure TMainForm.Idle(Sender: TObject; var Done: Boolean); begin glDraw(); SwapBuffers(DC); end; procedure TMainForm.FormResize(Sender: TObject); begin glViewport(0, 0, 800, Height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0, Width / Height, 0.1, 100.0); glMatrixMode(GL_MODELVIEW); end; end.