|
- unit uMainForm;
-
- {$mode objfpc}{$H+}
-
- interface
-
- uses
- Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
- uglcContext;
-
- type
- TMainForm = class(TForm)
- procedure FormCreate(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure FormPaint(Sender: TObject);
- procedure FormResize(Sender: TObject);
- private
- fContext: TglcContext;
- procedure Render;
- end;
-
- var
- MainForm: TMainForm;
-
- implementation
-
- {$R *.lfm}
-
- uses
- dglOpenGL;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //MainForm//////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TMainForm.FormCreate(Sender: TObject);
- var
- pf: TglcContextPixelFormatSettings;
- begin
- pf := TglcContext.MakePF();
- fContext := TglcContext.GetPlatformClass.Create(self, pf);
- fContext.BuildContext;
- fContext.Activate;
-
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_CULL_FACE);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TMainForm.FormDestroy(Sender: TObject);
- begin
- FreeAndNil(fContext);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TMainForm.FormPaint(Sender: TObject);
- begin
- Render;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TMainForm.FormResize(Sender: TObject);
- begin
- if Assigned(fContext) then begin
- glViewport(0, 0, ClientWidth, ClientHeight);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity;
- glOrtho(0, ClientWidth, ClientHeight, 0, 10, -10);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity;
- end;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TMainForm.Render;
- const
- X = 100;
- var
- w, h: Integer;
- begin
- w := ClientWidth;
- h := ClientHeight;
-
- glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
- glColor4f(1.0, 1.0, 1.0, 1.0);
- glBegin(GL_QUADS);
- glVertex2f(X, X);
- glVertex2f(X, h-X);
- glVertex2f(w-X, h-X);
- glVertex2f(w-X, X);
- glEnd;
- fContext.SwapBuffers;
- end;
-
- end.
|