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 }
/* 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; } }
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 }
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(); }
/* 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; }
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 }
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(); }
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()); }
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(); }
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(); }