RosettaCodeData/Task/OpenGL/Delphi/opengl.pas

73 lines
1.4 KiB
ObjectPascal

program OpenGLTriangle;
{$APPTYPE CONSOLE}
uses
System.Classes,
Sample.App,
Winapi.OpenGL,
System.UITypes;
type
TTriangleApp = class(TApplication)
public
procedure Initialize; override;
procedure Update(const ADeltaTimeSec, ATotalTimeSec: Double); override;
procedure Shutdown; override;
procedure KeyDown(const AKey: Integer; const AShift: TShiftState); override;
end;
{ TTriangleApp }
procedure TTriangleApp.Initialize;
begin
inherited;
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-30.0, 30.0, -30.0, 30.0, -30.0, 30.0);
glMatrixMode(GL_MODELVIEW);
end;
procedure TTriangleApp.KeyDown(const AKey: Integer; const AShift: TShiftState);
begin
inherited;
if (AKey = vkEscape) then
Terminate;
end;
procedure TTriangleApp.Shutdown;
begin
inherited;
// Writeln('App is Shutdown');
end;
procedure TTriangleApp.Update(const ADeltaTimeSec, ATotalTimeSec: Double);
begin
inherited;
glClearColor(0.3, 0.3, 0.3, 0.0);
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glShadeModel(GL_SMOOTH);
glLoadIdentity();
glTranslatef(-15.0, -15.0, 0.0);
glBegin(GL_TRIANGLES);
glColor3f(1.0, 0.0, 0.0);
glVertex2f(0.0, 0.0);
glColor3f(0.0, 1.0, 0.0);
glVertex2f(30.0, 0.0);
glColor3f(0.0, 0.0, 1.0);
glVertex2f(0.0, 30.0);
glEnd();
glFlush();
end;
begin
RunApp(TTriangleApp, 640, 480, 'OpenGL Triangle');
end.