unit Unit1;

interface

uses
Windows, Messages, Forms, Classes, Controls, ExtCtrls, ComCtrls,
StdCtrls, Dialogs, SysUtils,
OpenGL ; {����������� ����� OpenGL - �������� ������������� �������}

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);{����������� ��� �������� �����}
procedure FormPaint(Sender: TObject);{����������� ��� ����������� �����}
procedure FormDestroy(Sender: TObject);{����������� ��� ���������� ������ ���������� - ����������� �����}

private
hrc : HGLRC ;{ ������ �� �������� ���������������}
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

{+++ ��������� �� ����� +++}
procedure TForm1.FormPaint(Sender: TObject);
begin
wglMakeCurrent ( Canvas.Handle , hrc );
glClearColor ( 0.5 , 0.5 , 0.7 , 1.0 ); { ���� ���� }
glClear ( GL_COLOR_BUFFER_BIT ); { ������� ������ ����� }
glColor3f ( 1.0 , 0.0 , 0.0 );
glTranslatef ( 0.0 , 0.0 , 0.0 ); { ������� �������� ����� ������ }
glRotatef ( 0.0 , 0.0 , 0.0 , 1.0 );
glBegin ( GL_POLYGON );
glVertex2f ( -0.8 , 0.3 );
glVertex2f ( -0.5 , 0.5 );
glVertex2f ( 0.6 , 0.6 );
glVertex2f ( 0.8 , -0.2 );
glVertex2f ( 0.2 , -0.8 );
glVertex2f ( -0.8 , -0.4 );
glEnd;
glColor3f ( 0.0 , 1.0 , 1.0 );
glRectf ( 0.9 , -0.9 , 0.6 , -0.6 );
glColor3f ( 1.0 , 0.0 , 1.0 );
glLineWidth ( 5.0 );
glBegin ( GL_LINES );
glVertex2f ( 0.9 , 0.0 );
glVertex2f ( -0.9 , 0.0 );
glVertex2f ( 0.0 , 0.9 );
glVertex2f ( 0.0 , -0.9 );
glEnd;
glPointSize ( 10 );
glColor3f ( 1.0 , 1.0 , 0.0 );
glBegin ( GL_POINTS );
glVertex2f ( 0.5 , 0 );
glVertex2f ( 0.4 , 0.3 );
glEnd;
wglMakeCurrent (0, 0) ;
end;
{--- ��������� �� ����� ---}


{+++ ������ ������� +++}
procedure SetDCPixelFormat ( hdc : HDC );
var
pfd : TPixelFormatDescriptor;
nPixelFormat : Integer;
begin
FillChar (pfd, SizeOf (pfd), 0);
nPixelFormat := ChoosePixelFormat (hdc, @pfd);
SetPixelFormat (hdc, nPixelFormat, @pfd);
end;
{--- ������ ������� ---}


{+++ �������� ����� +++}
procedure TForm1.FormCreate(Sender: TObject);
begin
SetDCPixelFormat( Canvas.Handle );
hrc := wglCreateContext ( Canvas.Handle );
end;
{--- �������� ����� ---}


{+++ ���������� ������ ���������� +++}
procedure TForm1.FormDestroy(Sender: TObject);
begin
wglDeleteContext(hrc);
end;
{--- ���������� ������ ���������� ---}


end.