- unit glMain;
- interface
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, OpenGL12,
- AppEvnts, ExtCtrls;
- type
- TglForm = class(TForm)
- ApplicationEvents1: TApplicationEvents;
- FrameTimer: TTimer;
- procedure FormCreate(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
- procedure FrameTimerTimer(Sender: TObject);
- private
- { Private-Deklarationen }
- myDC : HDC;
- myRC : HGLRC;
- procedure RenderGL;
- public
- { Public-Deklarationen }
- end;
- var
- glForm: TglForm;
- Frames : Integer;
- implementation
- {$R *.DFM}
- Procedure TglForm.RenderGL;
- begin
- glTranslatef(0.0, 0.0,-4.0);
- glBegin(GL_QUADS);
- glVertex3f(-0.5,-0.5, 0.0);
- glVertex3f(-0.5, 0.5, 0.0);
- glVertex3f( 0.5, 0.5, 0.0);
- glVertex3f( 0.5,-0.5, 0.0);
- glEnd;
- end;
- procedure TglForm.FormCreate(Sender: TObject);
- var
- myPalette : HPALETTE;
- begin
- glForm.Height := 600;
- glForm.Width := 800;
- if not InitOpenGL then
- raise Exception.Create('Fehler beim Initialisieren von OpenGL!');
- myDC := GetDC(Handle);
- myRC:= CreateRenderingContext(myDC, [opDoubleBuffered] ,32, 0, 0, 0, 0, myPalette);
- ActivateRenderingContext(myDC, myRC);
- glClearColor(0.0, 0.0, 0.0, 0.0); //Hintergrundfarbe
- glEnable(GL_DEPTH_TEST); //Tiefenpuffer aktivieren
- end;
- procedure TglForm.FormDestroy(Sender: TObject);
- begin
- DeactivateRenderingContext();
- DestroyRenderingContext(myRC);
- closeOpenGL();
- end;
- procedure TglForm.ApplicationEvents1Idle(Sender: TObject;
- var Done: Boolean);
- begin
- glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
- glLoadIdentity;
- RenderGL;
- SwapBuffers(myDC);
- inc(Frames);
- Done := False; // Wichtig!!!
- end;
- procedure TglForm.FrameTimerTimer(Sender: TObject);
- begin
- glForm.Caption := 'OpenGL [Frames: ' + IntToStr(Frames) +']';
- Frames := 0;
- end;
- end.