void introGame() { glColor3f(1,1,1); glViewport(width*0.1,height*.80,30,40); renderBitmapString("WELCOME TO"); glViewport(width*0.1,height*.770,30,40); renderBitmapString("HELICOPTER EVASION"); glViewport(width*0.1,height*.740,30,40); renderBitmapString("INSTRUCTION:"); glViewport(width*0.1,height*.710,30,40); renderBitmapString("Avoid the random bridge around the city"); glViewport(width*0.1,height*.68,30,40); renderBitmapString("Using the space bar the helicopter will go up"); glViewport(width*0.1,height*.65,30,40); renderBitmapString("The Helicopter will go automatically go down"); glViewport(width*0.1,height*.62,30,40); renderBitmapString("Left key will move the helicopter go left"); glViewport(width*0.1,height*.59,30,40); renderBitmapString("Right key will move the helicopter go right"); glViewport(width*0.1,height*.56,30,40); renderBitmapString("1 will change your view to first person"); glViewport(width*0.1,height*.53,30,40); renderBitmapString("3 will change your view to third person"); glViewport(width*0.1,height*.50,30,40); renderBitmapString("PRESS SPACE TO START"); glViewport(0,0,width,height); glPushMatrix(); glTranslatef(4,3,8); glRotatef(rotIntro,0,1,0); drawHelicopter(); glPopMatrix(); }
void onDisplay( ) { glClearColor(0.6f, 0.6f, 1.0f, 1.0f); // torlesi szin beallitasa glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // kepernyo torles glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60.0, (float)screenWidth / (float)screenHeight, 1.0, 200.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(heliPos.x,heliPos.y+8,heliPos.z+16, heliPos.x,heliPos.y,heliPos.z, 0,1,-0.5); float ambientColor[] = {0.5f, 0.5f, 0.5f, 1.0f}; float lightColor0[] = {1.0f, 1.0f, 1.0f, 1.0f}; float lightPos0[] = {0.0f, 20.0f, 20.0f, 0.0f}; glLightfv(GL_LIGHT0, GL_AMBIENT, ambientColor); glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor0); glLightfv(GL_LIGHT0, GL_SPECULAR, lightColor0); glLightfv(GL_LIGHT0, GL_POSITION, lightPos0); drawLand(); glPushMatrix(); glTranslatef(0.0f,-10.0f,-40.0f); drawBuilding(2.0f); glPopMatrix(); glPushMatrix(); glTranslatef(10.0f,-10.0f,-40.0f); drawBuilding(2.0f); glPopMatrix(); glPushMatrix(); glTranslatef(-5.0f,-10.0f,-60.0f); drawBuilding(2.0f); glPopMatrix(); glPushMatrix(); glTranslatef(10.0f,-10.0f,-60.0f); drawBuilding(2.0f); glPopMatrix(); glPushMatrix(); glTranslatef(10.0f,-10.0f,-25.0f); drawBuilding(2.0f); glPopMatrix(); glPushMatrix(); glTranslatef(-10.0f,-10.0f,-25.0f); drawBuilding(2.0f); glPopMatrix(); drawQuaternion(); drawHelicopter(); glutSwapBuffers(); // Buffercsere: rajzolas vege }
void renderScene(void) { //Set up Viewport 1 scene // Use the Projection Matrix glMatrixMode(GL_PROJECTION); // Reset Matrix glLoadIdentity(); glScissor(0, 0, (GLsizei) windowWidth, (GLsizei) windowHeight*0.9); glEnable(GL_SCISSOR_TEST); glClearDepth(1.0); glClearColor(0.49f, 0.75f, 0.93f, 1.0f); // Set the viewport to be the entire window glViewport (0, 0, (GLsizei) windowWidth, (GLsizei) windowHeight*0.9); // Set the correct perspective. if (viewMode == PERSPECTIVE) gluPerspective(45.0f*zoom, ratio, 1.0f, 1000.0f); else if (viewMode == ORTHOGRAPHIC) glOrtho((-windowWidth/50)*zoom, (windowWidth/50)*zoom, (-windowHeight/50)*zoom, (windowHeight/50)*zoom, 1.0f, 1000); // Get Back to the Modelview glMatrixMode(GL_MODELVIEW); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //Decide if wire frame or shaded if (polygonMode == WIREFRAME) glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); else if (polygonMode == SHADED) glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glLoadIdentity(); moveCamera(); lx = (sin(heliRot+PI)); lz = (cos(heliRot+PI)); float camX = curX + lx * 10.0f; float camZ = curZ + lz * 10.0f; //Set camera if (viewPerson == THIRD) { gluLookAt(eyeX+curX, eyeY, eyeZ+curZ, curX, 0.0f, curZ, upX, upY, upZ); } else if (viewPerson == FIRST) { gluLookAt(camX, 1.5f, camZ, camX+lx, 1.5f, camZ+lz, 0.0f, 1.0f, 0.0f); } glEnable(GL_DEPTH_TEST); glShadeModel(GL_SMOOTH); // smooth out lighting glEnable(GL_NORMALIZE); // normalize lighting GLfloat mat_specular[] = {0.3, 0.3, 0.3, 1.0}; GLfloat mat_shininess[] = { 10.0 }; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE); glEnable(GL_COLOR_MATERIAL); if (lightingEnabled) { glEnable(GL_LIGHTING); if (sunlight) { setSunlight(); } else { glDisable(GL_LIGHT0); } if (thirdPersonLight) { setThirdPersonLight(); } else { glDisable(GL_LIGHT3); } } else { glDisable(GL_LIGHTING); } glPushMatrix(); glTranslatef(0.0f, -10, 0.0f); drawGround(250, 100); glPopMatrix(); glPushMatrix(); glTranslatef(0.0f, -9.9, 0.0f); drawTrack(100.0, 100.0); glPopMatrix(); glPushMatrix(); moveHelicopter(); glRotatef(heliRot/PI*180, 0.0f, 1.0f, 0.0f); drawHelicopter(); if (lightingEnabled) { if (circleLight) { moveLight(); setCircularLight(); } else { glDisable(GL_LIGHT2); } } glPopMatrix(); //Set up Viewport 2 scene // Use the Projection Matrix glMatrixMode(GL_PROJECTION); // Reset Matrix glLoadIdentity(); glScissor(0, windowHeight*0.9, (GLsizei) windowWidth, (GLsizei) windowHeight*0.1); glEnable(GL_SCISSOR_TEST); glClearDepth(1.0); glClearColor(1, 1, 1, 1); // Set the viewport to be the entire window glViewport (0, windowHeight*0.9, (GLsizei) windowWidth, (GLsizei) windowHeight*0.1); // Set the correct perspective. // Get Back to the Modelview glMatrixMode(GL_MODELVIEW); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); frame++; time=glutGet(GLUT_ELAPSED_TIME); if (time - timebase > 1000) { sprintf(s,"FPS:%4.2f", frame*1000.0/(time-timebase)); timebase = time; frame = 0; } glColor3f(0.0f,0.0f,0.0f); glPushMatrix(); glLoadIdentity(); setOrthographicProjection(); glTranslatef(100.0f, 150, 0.0f); renderBitmapString(5,30,0,GLUT_BITMAP_HELVETICA_18,s); glPopMatrix(); restorePerspectiveProjection(); glutSwapBuffers(); }
void playGame() { glEnable(GL_LIGHTING); glEnable(GL_LIGHT2); glEnable(GL_LIGHT3); glEnable(GL_LIGHT4); glEnable(GL_LIGHT5); glEnable(GL_LIGHT6); glEnable(GL_LIGHT7); glPushMatrix(); if (eThunder > 0) drawThunder(); GLfloat spotlightPostition2[] = {11,-40,-120*(lightpos+1),1}; GLfloat spotlightDirection2[] = {0,-1,0,0}; glLightfv(GL_LIGHT2, GL_SPECULAR, white_light); glLightfv(GL_LIGHT2, GL_AMBIENT, white_light); glLightfv(GL_LIGHT2, GL_DIFFUSE, white_light); glLightfv (GL_LIGHT2, GL_SPOT_DIRECTION, spotlightDirection2); glLightfv(GL_LIGHT2, GL_POSITION, spotlightPostition2); glLightf (GL_LIGHT2, GL_SPOT_CUTOFF, 45); GLfloat spotlightPostition3[] = {-11,-40,-120*(lightpos+1),1}; GLfloat spotlightDirection3[] = {0,-1,0,0}; glLightfv(GL_LIGHT3, GL_SPECULAR, white_light); glLightfv(GL_LIGHT3, GL_AMBIENT, white_light); glLightfv(GL_LIGHT3, GL_DIFFUSE, white_light); glLightfv (GL_LIGHT3, GL_SPOT_DIRECTION, spotlightDirection3); glLightfv(GL_LIGHT3, GL_POSITION, spotlightPostition3); glLightf (GL_LIGHT3, GL_SPOT_CUTOFF, 45); GLfloat spotlightPostition4[] = {11,-40,-120*lightpos,1}; GLfloat spotlightDirection4[] = {0,-1,0,0}; glLightfv(GL_LIGHT4, GL_SPECULAR, white_light); glLightfv(GL_LIGHT4, GL_AMBIENT, white_light); glLightfv(GL_LIGHT4, GL_DIFFUSE, white_light); glLightfv (GL_LIGHT4, GL_SPOT_DIRECTION, spotlightDirection4); glLightfv(GL_LIGHT4, GL_POSITION, spotlightPostition4); glLightf (GL_LIGHT4, GL_SPOT_CUTOFF, 45); GLfloat spotlightPostition5[] = {-11,-40,-120*lightpos,1}; GLfloat spotlightDirection5[] = {0,-1,0,0}; glLightfv(GL_LIGHT5, GL_SPECULAR, white_light); glLightfv(GL_LIGHT5, GL_AMBIENT, white_light); glLightfv(GL_LIGHT5, GL_DIFFUSE, white_light); glLightfv (GL_LIGHT5, GL_SPOT_DIRECTION, spotlightDirection5); glLightfv(GL_LIGHT5, GL_POSITION, spotlightPostition5); glLightf (GL_LIGHT5, GL_SPOT_CUTOFF, 45); if (c.isThirdPerson()) { glColor3f(0,0,0); glTranslatef(hx, hy, 0); drawHeadLight(); drawHelicopter(); } glPopMatrix(); // // glBindTexture(GL_TEXTURE_2D, _swtextureId); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glColor4f(1.0f, 1.0f, 1.0f,0.6); glColor3f(1,0,0); for (int i = 0; i < 70; ++i) { drawRightSidewalk(numSide + i); drawLeftSidewalk(numSide + i); } for (int i = 0; i <= 9; ++i) { drawRightScene((numBuild1 + i)%NUM_BUILDINGS); drawLeftScene((numBuild2 + i)%NUM_BUILDINGS); } glColor3f(0,0,1); glPushMatrix(); // glTranslatef(0,0,m.getZ()); drawSky(); glPopMatrix(); glDisable(GL_TEXTURE_2D); // glColor3f(0,1,1); drawLampost(lightpos-1); drawLampost(lightpos); drawLampost(lightpos+1); glPushMatrix(); glTranslatef(0,0,m.getZ()); drawStreet(); glPopMatrix(); drawBridges(); glDisable(GL_LIGHT0); glDisable(GL_LIGHT1); glDisable(GL_LIGHT2); glDisable(GL_LIGHT3); glDisable(GL_LIGHT4); glDisable(GL_LIGHT5); glDisable(GL_LIGHT6); }