Dlaczego to nie dziala do konca. Znaczy jak zamykam aplikacje to wyswietla mi sie blad:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Gl, Glu,
ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormResize(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
g_HDC: HDC;
hRC: HGLRC;
haDC: HDC;
width, height: integer;
angle: float = 0.0;
implementation
{$R *.DFM}
procedure SetupPixelFormat(hDC:HDC);
var
nPixelFormat: integer;
pfd: PIXELFORMATDESCRIPTOR;
begin
pfd.nSize := SizeOf(PIXELFORMATDESCRIPTOR);
pfd.nVersion := 1;
pfd.dwFlags := PFD_DRAW_TO_WINDOW;
pfd.dwFlags := PFD_SUPPORT_OPENGl;
pfd.dwFlags := PFD_DOUBLEBUFFER;
pfd.iPixelType := PFD_TYPE_RGBA;
pfd.cColorBits := 32;
pfd.cRedBits := 0;
pfd.cRedShift := 0;
pfd.cGreenBits := 0;
pfd.cGreenShift := 0;
pfd.cBlueBits := 0;
pfd.cBlueShift := 0;
pfd.cAlphaBits := 0;
pfd.cAlphaShift := 0;
pfd.cAccumBits := 0;
pfd.cAccumRedBits:= 0;
pfd.cAccumGreenBits:= 0;
pfd.cAccumBlueBits:= 0;
pfd.cAccumAlphaBits:=0;
pfd.cDepthBits :=16;
pfd.cStencilBits:= 0;
pfd.cAuxBuffers :=0;
pfd.iLayerType := PFD_MAIN_PLANE;
pfd.bReserved := 0;
pfd.dwLayerMask := 0;
pfd.dwVisibleMask:=0;
pfd.dwDamageMask:=0;
nPixelFormat:= ChoosePixelFormat(hdc, @pfd);
SetPixelFormat(hDC,nPixelFormat,@pfd);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
haDC:= GetDC(form1.Handle);
g_HDC:= haDC;
SetupPixelFormat(haDC);
hRC:= wglCreateContext(haDC);
wglMakeCurrent(haDC, hRC);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
wglMakeCurrent(haDC, null);
wglDeleteContext(hRC);
ReleaseDC(Form1.Handle,haDC);
end;
procedure TForm1.FormResize(Sender: TObject);
begin
height:= form1.Height;
width := form1.Width;
if height=0 then form1.height:=1;
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0,width/height,1.0,1000.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for I:=0 to 200 do
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
angle := angle + 0.1;
glTranslatef(0.0,0.0,-5.0);
glRotatef(angle,0.0,0.0,1.0);
glColor3f(1.0,0.0,0.0);
glBegin(GL_TRIANGLES);
glVertex3f(0.0,0.0,0.0);
glVertex3f(1.0,0.0,0.0);
glVertex3f(1.0,1.0,0.0);
glEnd();
SwapBuffers(g_HDC);
end;
end;
end.