Пример #1
0
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();

}
Пример #2
0
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

}
Пример #3
0
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();
    
}
Пример #4
0
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);
}