- unit main;
- interface
- uses
- Windows,
- Messages,
- Forms,
- Dialogs,
- dglOpenGL;
- type
- TForm1 = class(TForm)
- procedure FormCreate(Sender: TObject);
- procedure FormResize(Sender: TObject);
- procedure ApplicationEventsIdle(Sender: TObject; var Done: Boolean);
- private
- procedure SetupGL;
- procedure Render;
- public
- DC : hDC;
- RC : hglRC;
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- DC := GetDC(Handle);
- if( not InitOpenGL ) then ShowMessage('Could not initialize OpenGL');
- RC := CreateRenderingContext( DC,
- [opDoubleBuffered],
- 32,
- 24,
- 0,0,0,
- 0);
- ActivateRenderingContext( DC, RC );
- SetupGL;
- end;
- procedure TForm1.FormResize(Sender: TObject);
- begin
- glViewport(0,0,ClientWidth,ClientHeight);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity;
- gluPerspective(45.0, ClientWidth/ClientHeight, 1, 400);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- end;
- procedure TForm1.ApplicationEventsIdle(Sender: TObject; var Done: Boolean);
- begin
- Render;
- Done := false;
- end;
- procedure TForm1.SetupGL;
- begin
- glShadeModel(GL_SMOOTH);
- glClearColor(0.0,0.3,0.4,0.0);
- glEnable(GL_DEPTH_TEST);
- glDepthFunc(GL_LEQUAL);
- glClearDepth(1.0);
- glEnable(GL_CULL_FACE);
- glCullFace(GL_BACK);
- glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity;
- gluPerspective(45.0, ClientWidth/ClientHeight, 1, 400);
- end;
- procedure TForm1.Render;
- begin
- glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
- glLoadIdentity;
- SwapBuffers( DC );
- end;
- end.