// Author: Drunkie
// Description: Draws a 3D model of the letter A

Main();

#include <drivers\drv_gl.txt>

void Main()
{
    glSleep( 40 ); // Sleep for 40 milliseconds (reduces fps lag)
    glClear( 100, 149, 237 ); // Clear screen

    glCoordPipe( GL_CPIPE_N1_1 ); // Set coordinate pipe to [-1 to 1] mode
    glVertexPipe( GL_VPIPE_XYZTRANSFORM ); // Set vertex pipe to xyz transformation

    glLightPos( 0, 0, -50 ); // Set the light position
    glLightColor( 255, 255, 255, 1 ); // Set the light color

    glLookAt(
        0, 0, -2.8, // Camera pos
        0, 0, 0, // Camera target
        0, 1, 0 // Camera up
    );

    // Create variable to hold curtime
    float time;
    timer time;

    // Create perspective and matrix transformations
    glPerspective( 30, 1, 1, 20 ); // FOV, ASPECT RATIO, ZNEAR, ZFAR
    glRotate( 0, 1, 0, time ); // AXIS X, Y, Z, ANGLE W
    glTranslate( 0, -0.1, 0, 0 ); // TRANSLATION X, Y, Z
    glScale( 1, 1, 1, 0 ); // SCALE X, Y, Z

    glEnable( GL_VERTEX_BUFFER ); // Enable vertex buffer
    glEnable( GL_VERTEX_ZSORT ); // Enable Z sorting
    glEnable( GL_VERTEX_LIGHTING ); // Enable vertex lighting
    glEnable( GL_VERTEX_CULLING ); // Enable face culling

    // Solid 3D polygon
    glFillMode( GL_FILL_SOLID ); // Set fillmode as solid
    glColor4( 255, 255, 255, 255 ); // Set draw color with alpha
    glPoly3D( vertexBuffer, 30 ); // Draw 3D polygon
    glFlush(); // Flush the vertex buffer to the screen

    glExit(); // Exit
}

// The vertex data for our model
vertexBuffer:
db 1,1,0; db 0.75,1,0; db 0.25,-1,0;
db 0.75,1,0; db 0,-1,0; db 0.25,-1,0;
db -1,1,0; db -0.25,-1,0; db -0.75,1,0;
db -0.75,1,0; db -0.25,-1,0; db 0,-1,0;
db 1,1,0.25; db 0.25,-1,0.25; db 0.75,1,0.25;
db 0.75,1,0.25; db 0.25,-1,0.25; db 0,-1,0.25;
db -1,1,0.25; db -0.75,1,0.25; db -0.25,-1,0.25;
db -0.75,1,0.25; db 0,-1,0.25; db -0.25,-1,0.25;
db 0.25,-1,0; db -0.25,-1,0; db 0.25,-1,0.25;
db -0.25,-1,0; db -0.25,-1,0.25; db 0.25,-1,0.25;
db -1,1,0; db -1,1,0.25; db -0.25,-1,0;
db -1,1,0.25; db -0.25,-1,0.25; db -0.25,-1,0;
db 1,1,0.25; db 1,1,0; db 0.25,-1,0;
db 1,1,0.25; db 0.25,-1,0; db 0.25,-1,0.25;
db -0.75,1,0; db 0,-1,0; db -0.75,1,0.25;
db -0.75,1,0.25; db 0,-1,0; db 0,-1,0.25;
db 0.75,1,0; db 0.75,1,0.25; db 0,-1,0;
db 0.75,1,0.25; db 0,-1,0.25; db 0,-1,0;
db -0.47,0.25,0; db -0.38,0.01,0; db 0.38,0.01,0;
db 0.38,0.01,0; db 0.47,0.25,0; db -0.47,0.25,0;
db -0.47,0.25,0.25; db 0.38,0.01,0.25; db -0.38,0.01,0.25;
db 0.38,0.01,0.25; db -0.47,0.25,0.25; db 0.47,0.25,0.25;
db -0.38,0.01,0; db -0.38,0.01,0.25; db 0.38,0.01,0;
db 0.38,0.01,0; db -0.38,0.01,0.25; db 0.38,0.01,0.25;
db -0.47,0.25,0; db 0.47,0.25,0; db -0.47,0.25,0.25;
db -0.47,0.25,0.25; db 0.47,0.25,0; db 0.47,0.25,0.25;
db -1,1,0; db -0.75,1,0; db -1,1,0.25;
db -0.75,1,0; db -0.75,1,0.25; db -1,1,0.25;
db 1,1,0; db 1,1,0.25; db 0.75,1,0;
db 0.75,1,0; db 1,1,0.25; db 0.75,1,0.25;
