unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls,
OpenGLContext, glcanvas, Gl;
type
{ TForm1 }
TForm1 = class(TForm)
OpenGLControl1: TOpenGLControl;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure OpenGLControl1Paint(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
tmr: Single;
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
glInit(OpenGLControl1);
end;
procedure TForm1.OpenGLControl1Paint(Sender: TObject);
var
i : integer;
begin
glFillScreen(OpenGLControl1, 0,0,0, 1.0); // Need
for i:=0 to 10 do
glCircle(350 + i *110 , 100, 50 , 3+i*2 , 1.0, 1.0, 1.0, 0.7, True);
// X , Y , Radius, Segments , color RGBA ,Filled ?
glLine(400, 200, 600, 250, 1.0, 0.0, 0.0, 1.0, 3.0);
glLine3D(1200, 600, 0, 1400, 700, 0, 0.9, 0.1, 0.9, 1.0, 4.0);
glRect(700, 200, 180, 100, glColorRGBA(0.0, 1.0, 0.0, 1.0), False, 2.5);
glRectFast(900, 200, 180, 100, glColorRGBA(0.0, 0.4, 1.0, 0.8));
glCircle(500, 400, 70, 40, 1.0, 0.2, 1.0, 1.0, False, 2.5);
glCircle(700, 400, 70, 40, 0.0, 1.0, 1.0, 0.7, True);
glTriangle(900, 400, 90, tmr, 1.0, 1.0, 0.0, 1.0, False, 2.5);
glTriangle(1100, 400, 90, -tmr, 1.0, 0.5, 0.0, 0.8, True);
glEllipse(500, 600, 100, 60, 40, 1.0, 0.7, 0.8, 1.0, False, 2.5);
glEllipse(700, 600, 100, 60, 40, 0.8, 0.3, 0.9, 0.7, True);
glStar(900, 600, 60, 5, tmr*2, 1.0, 0.8, 0.0, 1.0, False, 2.5);
glStar(1100, 600, 50, 8, -tmr, 0.8, 0.2, 0.2, 0.9, True);
glStar(900, 800, 80, 10, 18+tmr * 1.0, 0.6, 0.6, 0.6, 1.0, True);
glStar(1020, 800, 80, 10, -tmr * 1.0, 0.8, 0.9, 0.8, 1.0, True);
glQuad(1200, 200, 1350, 180, 1380, 300, 1230, 320, 0.6, 0.2, 0.8, 1.0, True);
glQuad(1200, 400, 1350, 380, 1380, 500, 1230, 520, glColorRGBA(0.9, 0.2, 0.8, 1.0), True);
OpenGLControl1.SwapBuffers; // Need !
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
tmr := tmr + 1.5;
if tmr > 360.0 then tmr := tmr - 360.0;
OpenGLControl1.Invalidate;
end;
end.