73 lines
1.4 KiB
ObjectPascal
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.
|