void display (void) {
	keyOperations();

	glClearColor(1.0f, 0.0f, 0.0f, 1.0f); // Clear the background of our window to red
	glClear(GL_COLOR_BUFFER_BIT); //Clear the colour buffer (more buffers later on)
	glLoadIdentity(); // Load the Identity Matrix to reset our drawing locations

	glTranslatef(0.0f, 0.0f, -5.0f); // Push eveything 5 units back into the scene, otherwise we won't see the primitive

	glTranslatef(0.0f, yLocation, 0.0f); // Translate our object along the y axis

	glRotatef(yRotationAngle, 0.0f, 1.0f, 0.0f); // Rotate our object around the y axis

	glScalef(0.5f, 1.0f, 2.0f); // Make the shape half as wide, the same height and twice as deep
	glutWireCube(2.0f); // Render the primitive

	glutSwapBuffers(); // Swap our buffers

	if (movingUp) // If we are moving up
		yLocation -= 0.05f; // Move up along our yLocation
	else // Otherwise
		yLocation += 0.05f; // Move down along our yLocation

	if (yLocation < -3.0f) // If we have gone up too far
		movingUp = false; // Reverse our direction so we are moving down
	else if (yLocation > 3.0f) // Else if we have gone down too far
		movingUp = true; // Reverse our direction so we are moving up

	yRotationAngle += 0.1f; // Increment our rotation value

	if (yRotationAngle > 360.0f) // If we have rotated beyond 360 degrees (a full rotation)
		yRotationAngle -= 360.0f; // Subtract 360 degrees off of our rotation
}
示例#2
0
/*
    Function: Runs the application display
    Flow:
        - Check key operations as they may have adverse effects on the
            display state e.g may require the display matrix to move forward
        - Set Clear color ( RED in this case )
        - Clear the color buffer ( Using GL_COLOR_BUFFER_BIT )
            information in other buffers will come later
        - Load the Identity Matrix ( Poorly named me thinks )
            to reset our drawing locations
        - Move the camera to look in the required direction
        - Render object to screen ( Will render at location: 0, 0, -5 )
        - Swap buffers
        - Calcualte transofrmations for object
    End State:
        Rendering of picture to the the window of the application

*/
void display(void)
{
    /*
        Check any keyboard operations that may alter the display of the
        next frame
    */
    keyOperations();
    keySpecialOperations();

	texture = LoadTexture("texture.raw", 256, 256);
	glEnable(GL_TEXTURE_2D);
	glBindTexture(GL_TEXTURE_2D, texture);

    // Clear color is set to RED
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

    // Clear the color buffer
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glLoadIdentity();

    // Set lights up
    GLfloat DiffuseLight[] = { diffuseLightRed, diffuseLightGreen, diffuseLightBlue };
    GLfloat AmbientLight[] = { ambientLightRed, ambientLightGreen, ambientLightBlue };
    glLightfv (GL_LIGHT0, GL_DIFFUSE, DiffuseLight); //change the light accordingly
    glLightfv (GL_LIGHT1, GL_AMBIENT, AmbientLight); //change the light accordingly

    // Set light position
    GLfloat LightPosition[] = {lightX, lightY, lightZ, lightW}; // lightW indicates if it is a point light
    glLightfv (GL_LIGHT0, GL_POSITION, LightPosition); //change the light accordingly



    // Reset Identity Matrix
    //glLoadIdentity();
    
    // Light the scene
    //light();

    // Look at a point
    gluLookAt (ViewPositionX, ViewPositionY, ViewPositionZ - 10.0, 
	 	ViewPositionX, ViewPositionY, ViewPositionZ, 0.0, 1.0, 0.0);

    // Render objects
    //renderPrimitive();
	 glTranslatef(0, 0, -5);
	 glCallList(cubelist);

	// Swap the old buffer out for the new rendered image
    glutSwapBuffers();

    // Increase angle
    angle += 0.1;
}
// Is called in glut main loop by the system on idle
void WorldDrawer::onIdle(){	//per frame
	keyOperations();			// Operations for buffered keys
	mouseRotations();
	
	if(animation){
		// Do nothing here
		angle = angle+1;
	
		if(angle > 360) angle = angle-360;
	}
}
示例#4
0
void display (void) {  
keyOperations();  
  
glClearColor(1.0f, 0.0f, 0.0f, 1.0f); // Clear the background of our window to red  
glClear(GL_COLOR_BUFFER_BIT); //Clear the colour buffer (more buffers later on)  
glLoadIdentity(); // Load the Identity Matrix to reset our drawing locations  
  
glTranslatef(0.0f, 0.0f, -5.0f); // Push eveything 5 units back into the scene, otherwise we won't see the primitive  
  
glutWireCube(2.0f); // Render the primitive  
  
glFlush(); // Flush the OpenGL buffers to the window  
}  
示例#5
0
void display()
{
	keyOperations();
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glLoadIdentity();
	glTranslatef(0.0f,0.0f,-10.0f);
	glTranslatef(x,y,z);
	glRotatef(xrot, 1.0f, 0.0f, 0.0f);
	glRotatef(yrot, 0.0f, 1.0f, 0.0f);

	drawBox(width,height,depth);

	glFlush();
	glutSwapBuffers();
}
示例#6
0
/*
    Function: Runs the application display
    Flow:
        - Check key operations as they may have adverse effects on the 
            display state e.g may require the display matrix to move forward
        - Set Clear color ( RED in this case )
        - Clear the color buffer ( Using GL_COLOR_BUFFER_BIT )
            information in other buffers will come later
        - Load the Identity Matrix ( Poorly named me thinks )
            to reset our drawing locations
        - Move the scene back 5 units as the camera is located at ( 0, 0, 0 )
        - Render object to screen ( Will render at location: 0, 0, -5 )
        - Flush all calls from OpenGL to the window
    End State:
        Rendering of picture to the the window of the application

*/
void display(void)
{
    /*  
        Check any keyboard operations that may alter the display of the
        next frame 
    */
    keyOperations();
    keySpecialOperations();
    
    // Clear color is set to RED
    glClearColor(1.0f, 0.0f, 0.0f, 1.0f);

    // Clear the color buffer
    glClear(GL_COLOR_BUFFER_BIT);

    // Reset Identity Matrix
    glLoadIdentity();

    // Move the scene 5 units back as the camera will be located at ( 0, 0, 0 )
    glTranslatef(0.0f, 0.0f, -5.0f);
    
    // Transformation and Rotation code
    glTranslatef(0.0f, yLocation, 0.0f);
    glRotatef(yRotationAngle, 0.0f, 1.0f, 0.0f);
    
    // Render our objects
    //renderPrimitive();
    glutWireCube(2.0f);
    
    // Flush all commands to the window
    glFlush();


    // Update object position ( Rotation and Translation)
    if ( movingUp )
        yLocation -= 0.005f;
    else
        yLocation += 0.005f;

    if ( yLocation < -3.0f )
        movingUp = false;
    else if ( yLocation > 3.0f )
        movingUp = true;
    
    yRotationAngle += 0.005f;
    if ( yRotationAngle > 360.0f )
        yRotationAngle -= 360.0f;
}
示例#7
0
void display (void) {
	keyOperations();
	specialKeyOperations();
//	glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Clear the background of our window to red
	glClear(GL_COLOR_BUFFER_BIT); //Clear the color buffer (more buffers later on)
	glLoadIdentity(); // Load the Identity Matrix to reset our drawing locations
	//gluLookAt(0, 0, -10, 0, 0, -1, 0, 1, 0);
	glTranslatef(xLocation, 0.0f, 0.0f); // Push everything 5 units back into the scene, otherwise we won't see the primitive

	glTranslatef(0.0f, yLocation, 0.0f); // Translate our object along the y axis
	glTranslatef(0.0f, 0.0f, zLocation);
	//glRotatef(yRotationAngle, 0.0f, 1.0f, 0.0f); // Rotate our object around the y axis
	glRotatef(xRotationAngle, 1.0f, 0.0f, 0.0f);
	glRotatef(yRotationAngle, 0.0f, 1.0f, 0.0f);
	
	//glColor3f(red,green,blue);
	glColor3f( 0.4f, 0.7f, 2.2f );
	glPushMatrix();
	glutSolidTeapot(20.0f);
	glPopMatrix();
	//glPushMatrix();
	//drawSky();
	//glPopMatrix();
	// Draw X/Y/Z Lines
	glPushMatrix();
	glColor3f( 1.0f, 1.0f, 1.0f );
	glBegin( GL_LINES );
	glVertex3f( -100.0f, 0.0f, 0.0f );
	glVertex3f( 100.0f, 0.0f, 0.0f );
	glVertex3f( 0.0f, -100.0f, 0.0f );
	glVertex3f( 0.0f, 100.0f, 0.0f );
	glVertex3f( 0.0f, 0.0f, -100.0f );
	glVertex3f( 0.0f, 0.0f, 100.0f );            
	glEnd();
	glPopMatrix();

	//glutSolidTeapot( 20.0f );
	//calcFPS();
	//drawFPS();
	//renderPrimitive(); // Render the primitive
	//
	glutSwapBuffers(); // Flush the OpenGL buffers to the window

}
示例#8
0
void display(void)
{
	keyOperations();
	glClearColor (skyColor[0],skyColor[1],skyColor[2],skyColor[3]);
	
	glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
	
	glLoadIdentity();
	
	resetStats();
	
	glMatrixMode(GL_MODELVIEW);
	
	camera->Render();
	RenderSky(camera->GetX(),camera->GetZ());
	Island->Render(camera->GetX(),camera->GetZ());
	
	drawFPS();
	writeString(10, 80,"Camera Position: %.2f %.2f %.2f",camera->GetX(),camera->GetY(),camera->GetZ());
	displayHUD();
	glutSwapBuffers();
}
示例#9
0
void Jogo::loop()
{
    while (janela.isOpen()) {

        desenha();

        /* Teclas de efeito contínuo */
        keyOperations();

        /* Trata possíveis eventos do SFML */
        sf::Event evento;
        while (janela.pollEvent(evento)) {
            switch (evento.type) {
            case sf::Event::Closed:
                /* Fechamento da janela (Alt+F4, etc) */
                janela.close();
                break;
            case sf::Event::KeyPressed:
                /* Pressionamento não contínuo de tecla */
                keyPressOperations(evento.key.code);
                break;
            case sf::Event::Resized:
                /* Redimensionamento da janela */
                remodela();
                break;
            case sf::Event::LostFocus:
                /* Pausa jogo ao alternar para outra janela */
                pausado = true;
                break;
            default: break;
            }
        }
        /* Atualiza jogo e elementos do cenário */
        if (pausado) continue;
        if (not Cenario::get().atualiza()) janela.close();
    }
    printf("Score final: %d\n", nave->getScore());
}
示例#10
0
void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);		     // Clear Screen and Depth Buffer

    glLoadIdentity();

    glTranslatef(0.0f,0.0f,-10.0f);

    keyOperations();

    // glRotatef(initialy, 0.0f, 1.0f, 0.0f);

    if (space_pressed_to_start_race)

    {

        gluLookAt(initialx,1,initialz,

                  initialx-sin(rotY),1,initialz-cos(rotY),

                  0,1,0);

    }

    else {

        gluLookAt((currTrack.X_max_world + currTrack.X_min_world)/2 + 150,100,(currTrack.Z_max_world + currTrack.Z_min_world)/2+200,

                  (currTrack.X_max_world + currTrack.X_min_world)/2,1,(currTrack.Z_max_world + currTrack.Z_min_world)/2,

                  0,1,0);

        // glScalef(0.01, 0.01, 0.01)

    }

    // glTranslatef(0.0f, 0.0f, initialz);



    glPushMatrix();

    glTranslatef(6,-2.00,5);

    if (space_pressed_to_start_race)

    {

        /*

        * drawing the enclosing box

        */

        glColor3f(0.5f, 0.8f, 0.5f);

        glBindTexture(GL_TEXTURE_2D, texture[1]);

        glBegin(GL_QUADS);

        for (int i = currTrack.Z_min_world; i < currTrack.Z_max_world; i+=10.0f)

        {

            for (int j = currTrack.X_min_world; j < currTrack.X_max_world; j+=10.0f)

            {

                glTexCoord2f(0.0, 0.0);

                glVertex3f(j,-0.0001f, i+10.0f);

                glTexCoord2f(0.0, 1.0);

                glVertex3f(j,-0.0001f,i);

                glTexCoord2f(1.0, 1.0);

                glVertex3f(j+10.0f,-0.0001f,i);

                glTexCoord2f(1.0, 0.0);

                glVertex3f(j+10.0f,-0.0001f, i+10.0f);

            }

        }

        glEnd();

        glColor3f(0.75f, 0.75f, 0.75f);

        glBindTexture(GL_TEXTURE_2D, texture[2]);

        // DrawEnclosingSphere(300, 10, 10);

        glBegin(GL_QUADS);

        for (int i = currTrack.Z_min_world; i < currTrack.Z_max_world; i+=25.0f)

        {

            for (int j = currTrack.X_min_world; j < currTrack.X_max_world; j+=25.0f)

            {

                glTexCoord2f(0.0, 0.0);

                glVertex3f(j,25.0f, i+25.0f);

                glTexCoord2f(0.0, 1.0);

                glVertex3f(j,25.0f,i);

                glTexCoord2f(1.0, 1.0);

                glVertex3f(j+25.0f,25.0f,i);

                glTexCoord2f(1.0, 0.0);

                glVertex3f(j+25.0f,25.0f, i+25.0f);

            }

        }

        glEnd();



        glColor3f(1.0f, 1.0f, 1.0f);

        // glBindTexture(GL_TEXTURE_2D, texture[3]);

        // DrawEnclosingSphere(300, 10, 10);

        glBegin(GL_QUADS);

        for (int i = currTrack.X_min_world; i < currTrack.X_max_world; i+=25.0f)

        {

            glTexCoord2f(0.0, 0.0);

            glVertex3f(i, 0.0f, currTrack.Z_min_world);

            glTexCoord2f(1.0, 0.0);

            glVertex3f(i + 25.0f, 0.0f, currTrack.Z_min_world);

            glTexCoord2f(1.0, 1.0);

            glVertex3f(i + 25.0f, 25.0f, currTrack.Z_min_world);

            glTexCoord2f(0.0, 1.0);

            glVertex3f(i, 25.0f, currTrack.Z_min_world);

        }

        for (int i = currTrack.X_min_world; i < currTrack.X_max_world; i+=25.0f)

        {

            glTexCoord2f(0.0, 0.0);

            glVertex3f(i, 0.0f, currTrack.Z_max_world);

            glTexCoord2f(1.0, 0.0);

            glVertex3f(i + 25.0f, 0.0f, currTrack.Z_max_world);

            glTexCoord2f(1.0, 1.0);

            glVertex3f(i + 25.0f, 25.0f, currTrack.Z_max_world);

            glTexCoord2f(0.0, 1.0);

            glVertex3f(i, 25.0f, currTrack.Z_max_world);

        }

        for (int i = currTrack.Z_min_world; i < currTrack.Z_max_world; i+=25.0f)

        {

            glTexCoord2f(0.0, 0.0);

            glVertex3f(currTrack.X_min_world, 0.0f,i);

            glTexCoord2f(1.0, 0.0);

            glVertex3f(currTrack.X_min_world, 0.0f,i+25.0f);

            glTexCoord2f(1.0, 1.0);

            glVertex3f(currTrack.X_min_world, 25.0f,i+25.0f);

            glTexCoord2f(0.0, 1.0);

            glVertex3f(currTrack.X_min_world, 25.0f,i);

        }

        for (int i = currTrack.Z_min_world; i < currTrack.Z_max_world; i+=25.0f)

        {

            glTexCoord2f(0.0, 0.0);

            glVertex3f(currTrack.X_max_world, 0.0f,i);

            glTexCoord2f(1.0, 0.0);

            glVertex3f(currTrack.X_max_world, 0.0f,i+25.0f);

            glTexCoord2f(1.0, 1.0);

            glVertex3f(currTrack.X_max_world, 25.0f,i+25.0f);

            glTexCoord2f(0.0, 1.0);

            glVertex3f(currTrack.X_max_world, 25.0f,i);

        }

        glEnd();

    }



    /*

    * drawing the track

    */

    glColor3f(3.0f,3.0f,3.0f);

    glBindTexture(GL_TEXTURE_2D, texture[0]);

    if (currTrack.id == 2) {

        glBegin(GL_QUADS);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( -69.6982f, 0.0000f, 146.3044f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( -44.6982f, 0.0000f, 146.3044f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( -44.6982f, 0.0000f, -3.6956f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( -69.6982f, 0.0000f, -3.6956f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( -69.6982f, 0.0000f, -3.6956f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( -44.6982f, 0.0000f, -3.6956f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( -41.5202f, 0.0000f, -20.8055f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( -65.0125f, 0.0000f, -29.3560f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( -65.0125f, 0.0000f, -29.3560f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( -41.5202f, 0.0000f, -20.8055f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( -32.8378f, 0.0000f, -35.8439f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( -51.9889f, 0.0000f, -51.9136f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( -51.9889f, 0.0000f, -51.9136f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( -32.8378f, 0.0000f, -35.8439f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( -19.5355f, 0.0000f, -47.0058f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( -32.0355f, 0.0000f, -68.6564f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( -32.0355f, 0.0000f, -68.6564f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( -19.5355f, 0.0000f, -47.0058f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( -3.2180f, 0.0000f, -52.9449f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( -7.5592f, 0.0000f, -77.5651f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( -7.5592f, 0.0000f, -77.5651f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( -3.2180f, 0.0000f, -52.9449f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( 14.1469f, 0.0000f, -52.9449f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( 18.4881f, 0.0000f, -77.5651f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( 18.4881f, 0.0000f, -77.5651f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( 14.1469f, 0.0000f, -52.9449f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( 30.4644f, 0.0000f, -47.0058f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( 42.9644f, 0.0000f, -68.6564f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( 42.9644f, 0.0000f, -68.6564f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( 30.4644f, 0.0000f, -47.0058f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( 43.7667f, 0.0000f, -35.8439f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( 62.9178f, 0.0000f, -51.9136f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( 62.9178f, 0.0000f, -51.9136f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( 43.7667f, 0.0000f, -35.8439f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( 52.4491f, 0.0000f, -20.8055f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( 75.9414f, 0.0000f, -29.3560f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( 75.9414f, 0.0000f, -29.3560f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( 52.4491f, 0.0000f, -20.8055f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( 55.4644f, 0.0000f, -3.7045f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( 80.4644f, 0.0000f, -3.7045f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( 80.4644f, 0.0000f, -3.7045f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( 55.4644f, 0.0000f, -3.7045f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( 55.4316f, 0.0000f, 146.3044f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( 80.4316f, 0.0000f, 146.3044f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( 80.4316f, 0.0000f, 146.3044f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( 55.4316f, 0.0000f, 146.3044f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( 52.4491f, 0.0000f, 163.3138f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( 75.9414f, 0.0000f, 171.8643f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( 75.9414f, 0.0000f, 171.8643f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( 52.4491f, 0.0000f, 163.3138f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( 43.7667f, 0.0000f, 178.3522f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( 62.9178f, 0.0000f, 194.4219f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( 62.9178f, 0.0000f, 194.4219f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( 43.7667f, 0.0000f, 178.3522f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( 30.4644f, 0.0000f, 189.5141f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( 42.9644f, 0.0000f, 211.1647f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( 42.9644f, 0.0000f, 211.1647f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( 30.4644f, 0.0000f, 189.5141f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( 14.1468f, 0.0000f, 195.4532f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( 18.4880f, 0.0000f, 220.0734f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( 18.4880f, 0.0000f, 220.0734f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( 14.1468f, 0.0000f, 195.4532f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( -3.2180f, 0.0000f, 195.4532f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( -7.5592f, 0.0000f, 220.0734f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( -7.5592f, 0.0000f, 220.0734f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( -3.2180f, 0.0000f, 195.4532f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( -19.5356f, 0.0000f, 189.5141f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( -32.0356f, 0.0000f, 211.1647f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( -32.0356f, 0.0000f, 211.1647f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( -19.5356f, 0.0000f, 189.5141f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( -32.8378f, 0.0000f, 178.3522f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( -51.9889f, 0.0000f, 194.4219f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( -51.9889f, 0.0000f, 194.4219f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( -32.8378f, 0.0000f, 178.3522f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( -41.5202f, 0.0000f, 163.3138f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( -65.0125f, 0.0000f, 171.8643f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( -65.0125f, 0.0000f, 171.8643f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( -41.5202f, 0.0000f, 163.3138f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( -44.6982f, 0.0000f, 146.3044f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( -69.6982f, 0.0000f, 146.3044f);



        glEnd();

    }

    else if (currTrack.id == 3) {

        glBegin(GL_QUADS);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( 0.2048f, 0.0000f, 16.3703f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( 0.2048f, 0.0000f, 86.3703f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( 25.2048f, 0.0000f, 86.3703f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( 25.2048f, 0.0000f, 16.3703f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( 29.8147f, 0.0000f, -53.3839f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( 0.2048f, 0.0000f, 16.3703f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( 25.2048f, 0.0000f, 16.3703f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( 54.8147f, 0.0000f, -53.3839f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( 29.8148f, 0.0000f, -123.4015f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( 29.8147f, 0.0000f, -53.3839f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( 54.8147f, 0.0000f, -53.3839f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( 54.8148f, 0.0000f, -123.4015f);



        glTexCoord2f(0.0, 0.0);

        glVertex3f( -4.2518f, 0.0000f, -193.4343f);

        glTexCoord2f(0.0, 1.0);

        glVertex3f( 29.8148f, 0.0000f, -123.4015f);

        glTexCoord2f(1.0, 1.0);

        glVertex3f( 54.8148f, 0.0000f, -123.4015f);

        glTexCoord2f(1.0, 0.0);

        glVertex3f( 20.7482f, 0.0000f, -193.4343f);



        glEnd();

    }

    else {

        currTrack.id++;

    }



    /*

    * Loading the object - car

    */

    glTranslatef(initialx-sin(rotY),1,initialz-cos(rotY));

    glColor3f(1.0,0.23,0.27);

    glScalef(0.6,0.6,0.6);

    glRotatef(rotY, 0.0f, 1.0f, 0.0f);

    // glCallList(ObjList);

    glRotatef(rotY, 0.0f, -1.0f, 0.0f);

    // glColor4f(0.0f, 0.0f, 0.0f, 0.0f);



    // glTranslatef(-(initialx-sin(rotY)),0,-(initialz-cos(rotY)));



    glPopMatrix();

    /*

    * Trying to do some HUD here

    */

    glMatrixMode(GL_PROJECTION);

    glPushMatrix();

    glLoadIdentity();

    glOrtho(0.0, win.width, win.height, 0.0, -1.0, 10.0);

    glMatrixMode(GL_MODELVIEW);

    glLoadIdentity();

    glDisable(GL_DEPTH_TEST);



    glClear(GL_DEPTH_BUFFER_BIT);



    glBegin(GL_QUADS);

    glColor3f(1.0f, 1.0f, 0.0f);

    glVertex2f(0.0, 0.0);

    glVertex2f(win.width, 0.0);

    glVertex2f(win.width, 100.0);

    glVertex2f(0.0, 100.0);

    glEnd();



    int lenghOfQuote;

    if (space_pressed_to_start_race) {

        /*

        *	Building the Speedometer

        */

        glTranslatef(win.width/4, win.height-100, 0.0f);

        glRotatef(60*sqrt(speed*speed) + 50, 0.0f, 0.0f, 1.0f);

        glBegin(GL_TRIANGLES);

        glColor3f(1.0f, 0.0f, 0.0f);

        glVertex2f(2.0f, 0.0f);

        glVertex2f(0.0f,100.0f);

        glVertex2f(-2.0f,0.0f);

        // glVertex2f(0.0f, -100.0f);

        glEnd();

        char Speed_Display[30];

        glRotatef(-60*sqrt(speed*speed) - 50, 0.0f, 0.0f, 1.0f);

        /*

        And Printing that speed as well

        */

        glScalef(0.2, 0.2, 0.2);

        glRotatef(180, -1.0, 0.0, 0.0);

        glTranslatef(-350.0f,-200.0f, 0.0f);

        sprintf(Speed_Display, "%.0f km/h", -50*speed);

        lenghOfQuote = (int)strlen(Speed_Display);

        for (int i = 0; i < lenghOfQuote; i++)

        {

            glColor4f(0.0f, 0.0f, 0.1f, 1.0f);

            // glColor3f((UpwardsScrollVelocity/10)+300+(l*10),(UpwardsScrollVelocity/10)+300+(l*10),0.0);

            glutStrokeCharacter(GLUT_STROKE_ROMAN, Speed_Display[i]);

        }

        glTranslatef(350.0f, 200.0f, 0.0f);

        glScalef(5, 5, 5);

        glRotatef(180, 1.0, 0.0, 0.0);

        glTranslatef(-1*win.width/4, -1*(win.height-100), 0.0f);

        /*

        *	Building the Steering Wheel

        */

        glTranslatef(win.width/2, win.height+100, 0.0f);

        glRotatef(2*turn, 0.0f, 0.0f, 1.0f);

        glBegin(GL_TRIANGLE_STRIP);

        for (int ii = 0.6; ii < 7; ii += 1.0)

        {

            glColor3f((ii%2), 0.0f, 0.0f);

            glVertex2f(sin(ii)*300, cos(ii)*300);

        }

        // glVertex2f(0.0f, -100.0f);

        glEnd();

        glRotatef(-2*turn, 0.0f, 0.0f, 1.0f);

        glTranslatef(-1*win.width/2, -1*(win.height+100), 0.0f);

    }

    /*

    * Trying to write some stuff inside the HUD created.

    */

    // char* myCharString = "Yo babes";

    // glutStrokeCharacter(GLUT_STROKE_ROMAN, 1/*myCharString*/);

    char quote[3][80];

    glScalef(0.4, 0.4, 0.5);

    glTranslatef(0.0f,150.0f, 0.0f);

    glRotatef(180, 1.0, 0.0, 0.0);

    if (space_pressed_to_start_race)

    {

        userTime = clock()-startTime;

        sprintf(quote[0], "Time: %0.2f", (float)(userTime)/CLOCKS_PER_SEC);



        lenghOfQuote = (int)strlen(quote[0]);

        glPushMatrix();

        // glTranslatef(-(lenghOfQuote*37), -(l*200), 0.0);

        for (int i = 0; i < lenghOfQuote; i++)

        {

            glColor4f(0.0f, 0.0f, 0.1f, 1.0f);

            // glColor3f((UpwardsScrollVelocity/10)+300+(l*10),(UpwardsScrollVelocity/10)+300+(l*10),0.0);

            glutStrokeCharacter(GLUT_STROKE_ROMAN, quote[0][i]);

        }

        glPopMatrix();

    }

    else {

        sprintf(quote[0], "Press Space to start Race");

        sprintf(quote[1], "Press ' c ' to change car");

        sprintf(quote[2], "Press ' t ' to change track");

        for (int jj = 0; jj < 3; ++jj)

        {

            lenghOfQuote = (int)strlen(quote[jj]);

            for (int i = 0; i < lenghOfQuote; i++)

            {

                glColor4f(0.0f, 0.0f, 0.0f, 1.0f);

                glutStrokeCharacter(GLUT_STROKE_ROMAN, quote[jj][i]);

            }

            glTranslatef(-70*(lenghOfQuote), -200, 0.0);

        }

    }



    //Make sure we can render in 3d again

    glMatrixMode(GL_PROJECTION);

    glPopMatrix();

    glMatrixMode(GL_MODELVIEW);

    if (frame_type == PAUSE_SCREEN)

    {

        return;

    }

    glutSwapBuffers();

}
示例#11
0
void display() 
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);		     // Clear Screen and Depth Buffer
	glLoadIdentity();
	glTranslatef(0.0f,0.0f,-10.0f);			
	keyOperations();
	// glRotatef(initialy, 0.0f, 1.0f, 0.0f);
	gluLookAt(initialx,1,initialz,
		initialx-sin(rotY),1,initialz-cos(rotY),
		0,1,0);
	// glTranslatef(0.0f, 0.0f, initialz);
	
	glPushMatrix();
	glTranslatef(6,-2.00,5);
	/*
	* drawing the enclosing box
	*/
	glColor3f(0.5f, 0.8f, 0.5f);
	glBindTexture(GL_TEXTURE_2D, texture[1]);
	glBegin(GL_QUADS);
	for (int i = -100.0; i < 250.0f; i+=25.0f)
	{
		for (int j = -100.0f; j < 100.0f; j+=25.0f)
		{
			glTexCoord2f(0.0, 0.0);
				glVertex3f(j,-0.0001f, i+25.0f);
			glTexCoord2f(0.0, 1.0);
				glVertex3f(j,-0.0001f,i);
			glTexCoord2f(1.0, 1.0);
				glVertex3f(j+25.0f,-0.0001f,i);
			glTexCoord2f(1.0, 0.0);
				glVertex3f(j+25.0f,-0.0001f, i+25.0f);			
		}
	}
	glEnd();
	glColor3f(0.75f, 0.75f, 0.75f);
	glBindTexture(GL_TEXTURE_2D, texture[2]);
	// DrawEnclosingSphere(300, 10, 10);
	glBegin(GL_QUADS);
	for (int i = -100.0; i < 250.0f; i+=25.0f)
	{
		for (int j = -100.0f; j < 100.0f; j+=25.0f)
		{
			glTexCoord2f(0.0, 0.0);
				glVertex3f(j,25.0f, i+25.0f);
			glTexCoord2f(0.0, 1.0);
				glVertex3f(j,25.0f,i);
			glTexCoord2f(1.0, 1.0);
				glVertex3f(j+25.0f,25.0f,i);
			glTexCoord2f(1.0, 0.0);
				glVertex3f(j+25.0f,25.0f, i+25.0f);			
		}
	}
	glEnd();

	glColor3f(1.0f, 1.0f, 1.0f);
	// glBindTexture(GL_TEXTURE_2D, texture[3]);
	// DrawEnclosingSphere(300, 10, 10);
	glBegin(GL_QUADS);
	for (int i = -100.0f; i < 100.0f; i+=25.0f)
	{
		glTexCoord2f(0.0, 0.0);
			glVertex3f(i, 0.0f, -100.0f);
		glTexCoord2f(1.0, 0.0);
			glVertex3f(i + 25.0f, 0.0f, -100.0f);
		glTexCoord2f(1.0, 1.0);
			glVertex3f(i + 25.0f, 25.0f, -100.0f);
		glTexCoord2f(0.0, 1.0);
			glVertex3f(i, 25.0f, -100.0f);
	}
	for (int i = -100.0f; i < 100.0f; i+=25.0f)
	{
		glTexCoord2f(0.0, 0.0);
			glVertex3f(i, 0.0f, 250.0f);
		glTexCoord2f(1.0, 0.0);
			glVertex3f(i + 25.0f, 0.0f, 250.0f);
		glTexCoord2f(1.0, 1.0);
			glVertex3f(i + 25.0f, 25.0f, 250.0f);
		glTexCoord2f(0.0, 1.0);
			glVertex3f(i, 25.0f, 250.0f);
	}
		for (int i = -100.0f; i < 250.0f; i+=25.0f)
	{
		glTexCoord2f(0.0, 0.0);
			glVertex3f(-100.0f, 0.0f,i);
		glTexCoord2f(1.0, 0.0);
			glVertex3f(-100.0f, 0.0f,i+25.0f);
		glTexCoord2f(1.0, 1.0);
			glVertex3f(-100.0f, 25.0f,i+25.0f);
		glTexCoord2f(0.0, 1.0);
			glVertex3f(-100.0f, 25.0f,i);
	}
		for (int i = -100.0f; i < 250.0f; i+=25.0f)
	{
		glTexCoord2f(0.0, 0.0);
			glVertex3f(100.0f, 0.0f,i);
		glTexCoord2f(1.0, 0.0);
			glVertex3f(100.0f, 0.0f,i+25.0f);
		glTexCoord2f(1.0, 1.0);
			glVertex3f(100.0f, 25.0f,i+25.0f);
		glTexCoord2f(0.0, 1.0);
			glVertex3f(100.0f, 25.0f,i);
	}
	glEnd();

	/*
	* drawing the track
	*/
	glColor3f(3.0f,3.0f,3.0f);
	glBindTexture(GL_TEXTURE_2D, texture[0]);
	if (currTrack.id == 2) {
		glBegin(GL_QUADS);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( -69.6982f, 0.0000f, 146.3044f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( -44.6982f, 0.0000f, 146.3044f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( -44.6982f, 0.0000f, -3.6956f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( -69.6982f, 0.0000f, -3.6956f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( -69.6982f, 0.0000f, -3.6956f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( -44.6982f, 0.0000f, -3.6956f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( -41.5202f, 0.0000f, -20.8055f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( -65.0125f, 0.0000f, -29.3560f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( -65.0125f, 0.0000f, -29.3560f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( -41.5202f, 0.0000f, -20.8055f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( -32.8378f, 0.0000f, -35.8439f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( -51.9889f, 0.0000f, -51.9136f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( -51.9889f, 0.0000f, -51.9136f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( -32.8378f, 0.0000f, -35.8439f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( -19.5355f, 0.0000f, -47.0058f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( -32.0355f, 0.0000f, -68.6564f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( -32.0355f, 0.0000f, -68.6564f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( -19.5355f, 0.0000f, -47.0058f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( -3.2180f, 0.0000f, -52.9449f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( -7.5592f, 0.0000f, -77.5651f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( -7.5592f, 0.0000f, -77.5651f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( -3.2180f, 0.0000f, -52.9449f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( 14.1469f, 0.0000f, -52.9449f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( 18.4881f, 0.0000f, -77.5651f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( 18.4881f, 0.0000f, -77.5651f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( 14.1469f, 0.0000f, -52.9449f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( 30.4644f, 0.0000f, -47.0058f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( 42.9644f, 0.0000f, -68.6564f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( 42.9644f, 0.0000f, -68.6564f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( 30.4644f, 0.0000f, -47.0058f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( 43.7667f, 0.0000f, -35.8439f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( 62.9178f, 0.0000f, -51.9136f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( 62.9178f, 0.0000f, -51.9136f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( 43.7667f, 0.0000f, -35.8439f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( 52.4491f, 0.0000f, -20.8055f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( 75.9414f, 0.0000f, -29.3560f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( 75.9414f, 0.0000f, -29.3560f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( 52.4491f, 0.0000f, -20.8055f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( 55.4644f, 0.0000f, -3.7045f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( 80.4644f, 0.0000f, -3.7045f);

			glTexCoord2f(0.0, 0.0);
			 glVertex3f( 80.4644f, 0.0000f, -3.7045f);
			glTexCoord2f(1.0, 0.0);
			 glVertex3f( 55.4644f, 0.0000f, -3.7045f);
			glTexCoord2f(1.0, 1.0);
			 glVertex3f( 55.4316f, 0.0000f, 146.3044f);
			glTexCoord2f(0.0, 1.0);
			 glVertex3f( 80.4316f, 0.0000f, 146.3044f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( 80.4316f, 0.0000f, 146.3044f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( 55.4316f, 0.0000f, 146.3044f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( 52.4491f, 0.0000f, 163.3138f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( 75.9414f, 0.0000f, 171.8643f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( 75.9414f, 0.0000f, 171.8643f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( 52.4491f, 0.0000f, 163.3138f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( 43.7667f, 0.0000f, 178.3522f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( 62.9178f, 0.0000f, 194.4219f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( 62.9178f, 0.0000f, 194.4219f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( 43.7667f, 0.0000f, 178.3522f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( 30.4644f, 0.0000f, 189.5141f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( 42.9644f, 0.0000f, 211.1647f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( 42.9644f, 0.0000f, 211.1647f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( 30.4644f, 0.0000f, 189.5141f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( 14.1468f, 0.0000f, 195.4532f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( 18.4880f, 0.0000f, 220.0734f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( 18.4880f, 0.0000f, 220.0734f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( 14.1468f, 0.0000f, 195.4532f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( -3.2180f, 0.0000f, 195.4532f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( -7.5592f, 0.0000f, 220.0734f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( -7.5592f, 0.0000f, 220.0734f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( -3.2180f, 0.0000f, 195.4532f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( -19.5356f, 0.0000f, 189.5141f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( -32.0356f, 0.0000f, 211.1647f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( -32.0356f, 0.0000f, 211.1647f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( -19.5356f, 0.0000f, 189.5141f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( -32.8378f, 0.0000f, 178.3522f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( -51.9889f, 0.0000f, 194.4219f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( -51.9889f, 0.0000f, 194.4219f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( -32.8378f, 0.0000f, 178.3522f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( -41.5202f, 0.0000f, 163.3138f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( -65.0125f, 0.0000f, 171.8643f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( -65.0125f, 0.0000f, 171.8643f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( -41.5202f, 0.0000f, 163.3138f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( -44.6982f, 0.0000f, 146.3044f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( -69.6982f, 0.0000f, 146.3044f);

		glEnd();
	}
	else if (currTrack.id == 3) {	
		glTranslatef(-40.0f, 0.0f, 100.0f);
		glBegin(GL_QUADS);
		
		glTexCoord2f(0.0, 0.0);
		 glVertex3f( 0.2048f, 0.0000f, 16.3703f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( 0.2048f, 0.0000f, 86.3703f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( 25.2048f, 0.0000f, 86.3703f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( 25.2048f, 0.0000f, 16.3703f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( 29.8147f, 0.0000f, -53.3839f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( 0.2048f, 0.0000f, 16.3703f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( 25.2048f, 0.0000f, 16.3703f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( 54.8147f, 0.0000f, -53.3839f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( 29.8148f, 0.0000f, -123.4015f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( 29.8147f, 0.0000f, -53.3839f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( 54.8147f, 0.0000f, -53.3839f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( 54.8148f, 0.0000f, -123.4015f);

		glTexCoord2f(0.0, 0.0);
		 glVertex3f( -4.2518f, 0.0000f, -193.4343f);
		glTexCoord2f(0.0, 1.0);
		 glVertex3f( 29.8148f, 0.0000f, -123.4015f);
		glTexCoord2f(1.0, 1.0);
		 glVertex3f( 54.8148f, 0.0000f, -123.4015f);
		glTexCoord2f(1.0, 0.0);
		 glVertex3f( 20.7482f, 0.0000f, -193.4343f);

		 glEnd();
	}
	else {
		currTrack.id++;
	}

	/*
	* Loading the object - car
	*/
	glTranslatef(initialx-sin(rotY),1,initialz-cos(rotY));
	glColor3f(1.0,0.23,0.27);
	glScalef(0.6,0.6,0.6);
	glRotatef(rotY, 0.0f, 1.0f, 0.0f);
	glCallList(ObjList);
	glRotatef(rotY, 0.0f, -1.0f, 0.0f);
	// glColor4f(0.0f, 0.0f, 0.0f, 0.0f);
	
	// glTranslatef(-(initialx-sin(rotY)),0,-(initialz-cos(rotY)));

	glPopMatrix();
	/*
	* Trying to do some HUD here
	*/
	glMatrixMode(GL_PROJECTION);
	glPushMatrix();
	glLoadIdentity();
	glOrtho(0.0, win.width, win.height, 0.0, -1.0, 10.0);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	glDisable(GL_DEPTH_TEST);

	glClear(GL_DEPTH_BUFFER_BIT);

	glBegin(GL_QUADS);
		glColor3f(1.0f, 1.0f, 0.0f);
		glVertex2f(0.0, 0.0);
		glVertex2f(win.width, 0.0);
		glVertex2f(win.width, 100.0);
		glVertex2f(0.0, 100.0);
	glEnd();

	/*
	* Trying to write some stuff inside the HUD created.
	*/
	// char* myCharString = "Yo babes";
	// glutStrokeCharacter(GLUT_STROKE_ROMAN, 1/*myCharString*/);
	char quote[80];
	glScalef(0.4, 0.4, 0.5);
	glTranslatef(0.0f,150.0f, 0.0f);
	glRotatef(180, 1.0, 0.0, 0.0);
	sprintf(quote, "Speed = %.0f       Turn Angle=%.0f", -50*speed, turn);
    int lenghOfQuote = (int)strlen(quote);
    glPushMatrix();
    // glTranslatef(-(lenghOfQuote*37), -(l*200), 0.0);
    for (int i = 0; i < lenghOfQuote; i++)
    {
    	glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
        // glColor3f((UpwardsScrollVelocity/10)+300+(l*10),(UpwardsScrollVelocity/10)+300+(l*10),0.0);
        glutStrokeCharacter(GLUT_STROKE_ROMAN, quote[i]);
    }
    glPopMatrix();

	//Make sure we can render in 3d again
	glMatrixMode(GL_PROJECTION);
	glPopMatrix();
	glMatrixMode(GL_MODELVIEW);
	glutSwapBuffers();
}