void SceneGalaxy::Render()
{
    // Render VBO here
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    //Temp variables
    Mtx44 translate, rotate, scale;
    Mtx44 MVP;

    //These will be replaced by matrix stack soon
    Mtx44 model;
    Mtx44 view;
    Mtx44 projection;

    //Set all matrices to identity
    translate.SetToIdentity();
    rotate.SetToIdentity();
    scale.SetToIdentity();
    model.SetToIdentity();

    //Set view matrix using camera settings
    viewStack.LoadIdentity();
    viewStack.LookAt(
        camera.position.x, camera.position.y, camera.position.z,
        camera.target.x, camera.target.y, camera.target.z,
        camera.up.x, camera.up.y, camera.up.z
    );

    //Set projection matrix to perspective mode
    projection.SetToPerspective(45.0f, 4.0f / 3.0f, 0.1f, 10000.0f); //FOV, Aspect Ratio, Near plane, Far plane
    modelStack.PushMatrix();
    modelStack.Translate(light[0].position.x, light[0].position.y, light[0].position.z);
    modelStack.Scale(0.1f, 0.1f, 0.1f);
    renderMesh(meshList[GEO_LIGHTBALL], false);
    modelStack.PopMatrix();


    /*modelStack.PushMatrix();
    renderMesh(meshList[GEO_AXES], false);
    modelStack.PopMatrix();*/

    modelStack.PushMatrix();
    modelStack.Translate(0, 496.9f, 0);
    RenderSkybox();
    modelStack.PopMatrix();

    RenderXwing();
    RenderAsteroid();
    RenderMissile();
    QuestDetail();

    RenderTextOnScreen(meshList[GEO_TEXT], "+", Color(0, 1, 0), 3, 13.1, 9);
    std::stringstream playerPos;
    playerPos << "X = " << camPosX << " Y = " << camPosY << " Z = " << camPosz;
    //RenderTextOnScreen(meshList[GEO_TEXT], playerPos.str(), Color(1, 0, 0), 2, 0, 18);
    std::stringstream ss;
    ss << "FPS:" << fps << "         " << playerPos.str();
    RenderTextOnScreen(meshList[GEO_TEXT], ss.str(), Color(0, 1, 0), 3, 0, 19);

}
void SceneText::Render()
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	Mtx44 perspective;
	perspective.SetToPerspective(45.0f, 4.0f / 3.0f, 0.1f, 10000.0f);
	//perspective.SetToOrtho(-80, 80, -60, 60, -1000, 1000);
	projectionStack.LoadMatrix(perspective);
	
	// Camera matrix
	viewStack.LoadIdentity();
	viewStack.LookAt(
						camera.position.x, camera.position.y, camera.position.z,
						camera.target.x, camera.target.y, camera.target.z,
						camera.up.x, camera.up.y, camera.up.z
					);
	// Model matrix : an identity matrix (model will be at the origin)
	modelStack.LoadIdentity();

	if(lights[0].type == Light::LIGHT_DIRECTIONAL)
	{
		Vector3 lightDir(lights[0].position.x, lights[0].position.y, lights[0].position.z);
		Vector3 lightDirection_cameraspace = viewStack.Top() * lightDir;
		glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightDirection_cameraspace.x);
	}
	else if(lights[0].type == Light::LIGHT_SPOT)
	{
		Position lightPosition_cameraspace = viewStack.Top() * lights[0].position;
		glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightPosition_cameraspace.x);
		Vector3 spotDirection_cameraspace = viewStack.Top() * lights[0].spotDirection;
		glUniform3fv(m_parameters[U_LIGHT0_SPOTDIRECTION], 1, &spotDirection_cameraspace.x);
	}
	else
	{
		Position lightPosition_cameraspace = viewStack.Top() * lights[0].position;
		glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightPosition_cameraspace.x);
	}
	if(lights[1].type == Light::LIGHT_DIRECTIONAL)
	{
		Vector3 lightDir(lights[1].position.x, lights[1].position.y, lights[1].position.z);
		Vector3 lightDirection_cameraspace = viewStack.Top() * lightDir;
		glUniform3fv(m_parameters[U_LIGHT1_POSITION], 1, &lightDirection_cameraspace.x);
	}
	else if(lights[1].type == Light::LIGHT_SPOT)
	{
		Position lightPosition_cameraspace = viewStack.Top() * lights[1].position;
		glUniform3fv(m_parameters[U_LIGHT1_POSITION], 1, &lightPosition_cameraspace.x);
		Vector3 spotDirection_cameraspace = viewStack.Top() * lights[1].spotDirection;
		glUniform3fv(m_parameters[U_LIGHT1_SPOTDIRECTION], 1, &spotDirection_cameraspace.x);
	}
	else
	{
		Position lightPosition_cameraspace = viewStack.Top() * lights[1].position;
		glUniform3fv(m_parameters[U_LIGHT1_POSITION], 1, &lightPosition_cameraspace.x);
	}
	
	RenderMesh(meshList[GEO_AXES], false);
	
	modelStack.PushMatrix();
	modelStack.Translate(lights[0].position.x, lights[0].position.y, lights[0].position.z);
	RenderMesh(meshList[GEO_LIGHTBALL], false);
	modelStack.PopMatrix();

	RenderSkybox();

	// perspective;
	////perspective.SetToPerspective(45.0f, 4.0f / 3.0f, 0.1f, 10000.0f);
	//perspective.SetToOrtho(-80, 80, -60, 60, -1000, 1000);
	//projectionStack.LoadMatrix(perspective);
	//viewStack.LoadIdentity();
	//
	//modelStack.PushMatrix();
	////modelStack.Translate(20, 0, -20);
	////modelStack.Scale(0.1f, 0.1f, 0.1f);
	//modelStack.Scale(50, 50, 50);
	////RenderMesh(meshList[GEO_QUAD], false);
	//RenderText(meshList[GEO_TEXT], "HelloWorld", Color(0, 1, 0));
	//modelStack.PopMatrix();
	modelStack.PushMatrix();
	modelStack.Translate(-20, 0, -20);
	RenderMesh(meshList[GEO_OBJECT], false);
	modelStack.PopMatrix();
	
	modelStack.PushMatrix();
	modelStack.Translate(20, 0, -20);
	RenderMesh(meshList[GEO_OBJECT], true);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Scale(10, 10, 10);
	//RenderText(meshList[GEO_TEXT], "Hello World", Color(0, 1, 0));
	RenderText(meshList[GEO_TEXT], "Hello World", Color(0, 1, 0));
	modelStack.PopMatrix();

	//On screen text
	std::ostringstream ss;
	ss.precision(5);
	ss << "FPS: " << fps;
	RenderTextOnScreen(meshList[GEO_TEXT], ss.str(), Color(0, 1, 0), 3, 0, 6);
	
	std::ostringstream ss1;
	ss1.precision(4);
	ss1 << "Light(" << lights[0].position.x << ", " << lights[0].position.y << ", " << lights[0].position.z << ")";
	RenderTextOnScreen(meshList[GEO_TEXT], ss1.str(), Color(0, 1, 0), 3, 0, 3);

	RenderTextOnScreen(meshList[GEO_TEXT], "Hello Screen", Color(0, 1, 0), 3, 0, 0);

	RenderMeshIn2D(meshList[GEO_CROSSHAIR], false,1,1,1);
}
Beispiel #3
0
/*** Procesamiento de cada cuadro ***/
void Video( float elapsed )
{
    /* Limpio la pantalla */
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT );
    
    /* Perspectiva */
    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    gluPerspective( 50.0f/zoom,                           // Ángulo de visión vertical
                   (GLfloat)WIDTH / (GLfloat)HEIGHT, // Aspecto
                   1.0f,                             // Plano cercano
                   2000.0f );                        // Plano lejano
    
    /* Cámara */
    glMatrixMode( GL_MODELVIEW );
    glLoadIdentity();
    
    /* Espada */
    glPushMatrix();
    glMultTransposeMatrixf(volumesEspada.matrix);
    
  //  glTranslatef(cam.pos.x, cam.pos.y + 5, cam.pos.z + 10);
    glRotatef(angX, 1.0f, 0.0f, 0.0f);
    glRotatef(angY, 0.0f, 1.0f, 0.0f);
    glRotatef(angZ, 0.0f, 0.0f, 1.0f);
    
    glCallList(modeloEspada.modelList);
    glPopMatrix();
    /*________*/
    
    
    
   
    
        
    
    
       
    
    
	VECTOR dir = SumVector(cam.pos, cam.look);
    
    gluLookAt(  cam.pos.x, cam.pos.y,  cam.pos.z,       // Posición
                dir.x, dir.y, dir.z,                    // Dirección
                0.0f, 1.0f, 0.0f );                     // Arriba
    
    
    
    
    /*Luz*/
    glPushMatrix();
    SetDirLight(GL_LIGHT0, &dirLight);
    glEnable (GL_LIGHT0);
    glPopMatrix();
    
    
    /*Terreno*/
    glPushMatrix();
    SetMaterial( &terrain.material );
    glBindTexture(GL_TEXTURE_2D, terrain.textureID);
    glCallList( terrain.terrainList );
    glPopMatrix();
    
    
    

    /*agua*/
      /*
    glPushMatrix();
    glEnable(GL_BLEND);
    SetMaterial( &agua.material );
    glBindTexture(GL_TEXTURE_2D, agua.textureID);
    glCallList( agua.terrainList );
    glDisable(GL_BLEND);
    glPopMatrix();
    
    
*/
    
    
    
    
    
    /*texto fps*/
 //   RenderText(fpstex, arialfont, 0, 0, &fontColor, GL_FALSE);
    
    
    /*SkyBox*/
    glPushMatrix();
    RenderSkybox(&skybox, &skyboxBox, &skyboxColor);
    glPopMatrix();
    
    

    

    
  
  
    
    
    
    //**texturitas!!!**//
    
    
    /* subacuatica*/
    
    
    glPushMatrix();
    

    //glLoadIdentity();
    glEnable(GL_BLEND);
    SetMaterial(&aguaMtrl);
    
    glBindTexture(GL_TEXTURE_2D, UnderwaterTex);

    glTranslatef(cam.pos.x, vWater, cam.pos.z);
    glScalef(1000.0f, 1000.0f, 1000.0f);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT);
    //  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER    , );

    
    glBegin(GL_QUADS);
    //Cara posterior
    
    
    
    glNormal3f( 0.0f,  1.0f, 0.0f);

    
    glTexCoord2f    ( 0.0f,  1.0f + movWater);
    glVertex3f      (-1.0f,  0.0f, -1.0f);
    glTexCoord2f    ( 0.0f,  0.0f + movWater);
    glVertex3f      ( 1.0f,  0.0f, -1.0f);
    glTexCoord2f    ( 1.0f,  0.0f + movWater);
    glVertex3f      ( 1.0f,  0.0f,  1.0f);
    glTexCoord2f    ( 1.0f,  1.0f + movWater);
    glVertex3f      (-1.0f,  0.0f,  1.0f);

    glEnd();
 
    glDisable(GL_BLEND);

    
    glPopMatrix();
    
    //_______________//
    //Transparencia


    
    
    
    
    /*HUD*/
    Begin2D(WIDTH, HEIGHT);
    


    
    if ( !renderUnderwater){
            }
    
    if (under){
        //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
        Render2DTexture( UnderwaterTex, 0, 0, WIDTH, HEIGHT );
    }
    
    
    //RENDER DEL MAPA Y EL DOT
    glPushMatrix();
    glTranslatef(WIDTH*0.79 , HEIGHT * 0.79, 0);
    Render2DTexture( mapTex, 0, 0, mapWidth, mapHeight );
    Render2DTexture( dotTex, dotX, dotZ, dotX+10, dotZ+10  );

    glPopMatrix();
    Render2DTexture(hudNull, 0, 0, WIDTH, HEIGHT);
    Render2DTexture(oxBar, 0, 0, ox * 10.0f, 50.0f);
    End2D();


    
    
    
    
    
    
    
    /* Ejecutar comandos en cola */
    glFlush();
    
    /* BackBuffer=FrontBuffer(flip) */
    SDL_GL_SwapBuffers();
}
Beispiel #4
0
void CGmObjSkybox::Proc()
{
    if( m_bIsValid )
        RenderSkybox( true );
}
Beispiel #5
0
void VoxGame::Render()
{
	if (m_pVoxWindow->GetMinimized())
	{
		// Don't call any render functions if minimized
		return;
	}

	// Begin rendering
	m_pRenderer->BeginScene(true, true, true);

		// Shadow rendering to the shadow frame buffer
		if (m_shadows)
		{
			RenderShadows();
		}

		// ---------------------------------------
		// Render 3d
		// ---------------------------------------
		m_pRenderer->PushMatrix();
			// Set the default projection mode
			m_pRenderer->SetProjectionMode(PM_PERSPECTIVE, m_defaultViewport);

			// Set back culling as default
			m_pRenderer->SetCullMode(CM_BACK);

			// Set default depth test
			m_pRenderer->EnableDepthTest(DT_LESS);

			// Set the lookat camera
			m_pGameCamera->Look();

			// Enable the lights
			m_pRenderer->PushMatrix();
				m_pRenderer->EnableLight(m_defaultLight, 0);
			m_pRenderer->PopMatrix();

			// Multisampling MSAA
			if (m_multiSampling)
			{
				m_pRenderer->EnableMultiSampling();
			}
			else
			{
				m_pRenderer->DisableMultiSampling();
			}

			// Water reflections
			if (m_waterRender && m_pChunkManager->IsUnderWater(m_pGameCamera->GetPosition()) == false && m_gameMode != GameMode_FrontEnd)
			{
				RenderWaterReflections();
			}

			// SSAO frame buffer rendering start
			if (m_deferredRendering)
			{
				m_pRenderer->StartRenderingToFrameBuffer(m_SSAOFrameBuffer);
			}

			m_pRenderer->SetClearColour(0.0f, 0.0f, 0.0f, 1.0f);
			m_pRenderer->ClearScene(true, true, true);

			// Render the lights (DEBUG)
			m_pRenderer->PushMatrix();
				m_pRenderer->SetCullMode(CM_BACK);
				m_pRenderer->SetRenderMode(RM_SOLID);
				m_pRenderer->RenderLight(m_defaultLight);
			m_pRenderer->PopMatrix();

			// Render the skybox
			RenderSkybox();

			BeginShaderRender();
			{
				// Render the chunks
				m_pChunkManager->Render(false);
			}
			EndShaderRender();

			// NPC sub selection - For character creation screen
			m_pNPCManager->RenderSubSelectionNormalNPCs();

			// Render items outline and silhouette before the world/chunks
			m_pItemManager->Render(true, false, false, false);
			m_pItemManager->Render(false, false, true, false);

			// NPCs (only non outline and hover)
			m_pNPCManager->RenderOutlineNPCs();
			m_pNPCManager->Render(false, false, true, false, false, false);

			// Enemies outline
			m_pEnemyManager->RenderOutlineEnemies();
			m_pEnemyManager->Render(false, false, true, false);

			BeginShaderRender();
			{
				// Scenery
				m_pSceneryManager->Render(false, false, false, false, false);

				// Projectiles
				m_pProjectileManager->Render();

				// Items
				m_pItemManager->Render(false, false, false, false);

				// NPCs
				m_pNPCManager->ResetNumRenderNPCs();
				m_pNPCManager->Render(false, false, false, false, true, false);

				// Enemies
				m_pEnemyManager->Render(false, false, false, false);

				// NPCs (only outline and hover)
				m_pNPCManager->Render(false, false, false, true, false, false);
				m_pNPCManager->RenderSubSelectionOverlayNPCs();
			}
			EndShaderRender();

			// Player selection block
			m_pPlayer->RenderSelectionBlock();

			// Render the block particles
			m_pBlockParticleManager->Render(false);

			// Render the instanced objects
			if(m_instanceRender)
			{
				m_pInstanceManager->Render();
			}

			// Frontend
			m_pFrontendManager->Render();

			BeginShaderRender();
			{

				if (m_gameMode != GameMode_FrontEnd)
				{
					// Render the player
					if (m_cameraMode != CameraMode_FirstPerson)
					{
						m_pPlayer->Render();
					}
				}
			}
			EndShaderRender();

			// Render the transparency items above the water render, so that they appear properly under water
			if (m_waterRender && m_gameMode != GameMode_FrontEnd)
			{
				if (m_cameraMode != CameraMode_FirstPerson)
				{
					m_pPlayer->RenderFace();
				}
				m_pNPCManager->RenderFaces();
				m_pEnemyManager->RenderFaces();

				if (m_cameraMode != CameraMode_FirstPerson)
				{
					m_pPlayer->RenderWeaponTrails();
				}
				m_pNPCManager->RenderWeaponTrails();
				m_pEnemyManager->RenderWeaponTrails();

				// Render water
				RenderWater();
			}

			// Debug rendering
			if(m_debugRender)
			{
				m_pLightingManager->DebugRender();

				m_pBlockParticleManager->RenderDebug();

				if (m_gameMode != GameMode_FrontEnd)
				{
					m_pPlayer->RenderDebug();
				}

				m_pNPCManager->RenderDebug();

				m_pEnemyManager->RenderDebug();

				m_pSceneryManager->RenderDebug();

				m_pItemManager->RenderDebug();

				m_pChunkManager->RenderDebug();

				m_pProjectileManager->RenderDebug();

				m_pBiomeManager->RenderDebug();

				if (m_gameMode == GameMode_FrontEnd)
				{
					m_pFrontendManager->RenderDebug();
				}
			}

			// Render player first person viewport
			if (m_gameMode != GameMode_FrontEnd)
			{
				if (m_cameraMode == CameraMode_FirstPerson)
				{
					RenderFirstPersonViewport();
				}
			}

			// SSAO frame buffer rendering stop
			if (m_deferredRendering)
			{
				m_pRenderer->StopRenderingToFrameBuffer(m_SSAOFrameBuffer);
			}
		m_pRenderer->PopMatrix();

		// Render the deferred lighting pass
		if (m_dynamicLighting)
		{
			RenderDeferredLighting();
		}

		// Render other viewports
		// Paperdoll for CharacterGUI
		RenderPaperdollViewport();
		// Portrait for HUD
		if (m_pVoxSettings->m_renderGUI)
		{
			RenderPortraitViewport();
		}

		// ---------------------------------------
		// Render transparency
		// ---------------------------------------
		RenderTransparency();

		// Render the SSAO texture
		if (m_deferredRendering)
		{
			RenderSSAOTexture();

			if (m_multiSampling && m_fxaaShader != -1)
			{
				RenderFXAATexture();
			}

			if(m_blur || m_pChunkManager->IsUnderWater(m_pGameCamera->GetPosition()))
			{
				RenderFirstPassFullScreen();
				RenderSecondPassFullScreen();
			}
		}

		// ---------------------------------------
		// Render 2d
		// ---------------------------------------
		m_pRenderer->PushMatrix();
			// Crosshair
			if (m_cameraMode == CameraMode_FirstPerson && m_bPaused == false)
			{
				if (m_pPlayer->IsDead() == false)
				{
					RenderCrosshair();
				}
			}

			// Text effects
			m_pTextEffectsManager->Render();

			// Cinematic mode (letter box)
			RenderCinematicLetterBox();

			// Render the HUD
			if (m_pVoxSettings->m_renderGUI)
			{
				RenderHUD();
			}
		m_pRenderer->PopMatrix();

		// Disable multisampling for 2d gui and text
		m_pRenderer->DisableMultiSampling();

		// Render other deferred rendering pipelines
		// Paperdoll SSAO for CharacterGUI
		RenderDeferredRenderingPaperDoll();
		// Portrait SSAO for HUD
		if (m_pVoxSettings->m_renderGUI)
		{
			RenderDeferredRenderingPortrait();
		}

		// Render the chunks 2d (debug text information)
		if (m_debugRender)
		{
			//m_pChunkManager->Render2D(m_pGameCamera, m_defaultViewport, m_defaultFont);
		}

		// Frontend 2D
		if(m_gameMode == GameMode_FrontEnd)
		{			
			m_pRenderer->PushMatrix();
				m_pRenderer->SetProjectionMode(PM_2D, m_defaultViewport);
				m_pRenderer->SetCullMode(CM_BACK);

				m_pRenderer->SetLookAtCamera(vec3(0.0f, 0.0f, 250.0f), vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 1.0f, 0.0f));

				m_pFrontendManager->Render2D();
			m_pRenderer->PopMatrix();
		}

		// Render the GUI
		RenderGUI();

		// Custom cursor
		if (m_pVoxSettings->m_customCursors && m_bCustomCursorOn)
		{
			if (m_gameMode != GameMode_FrontEnd || m_pFrontendManager->GetFrontendScreen() != FrontendScreen_Intro)
			{
				RenderCustomCursor();
			}
		}

		// Render debug information and text
		RenderDebugInformation();

		// Update the NPC screen positions for select character screen
		m_pNPCManager->UpdateScreenCoordinates2d(m_pGameCamera);

	// End rendering
	m_pRenderer->EndScene();


	// Pass render call to the window class, allow to swap buffers
	m_pVoxWindow->Render();
}
Beispiel #6
0
void SP2::Render()
{
	std::ostringstream oss;
	oss << "Camera X: " << camera.position.x;
	string var = oss.str();

	std::ostringstream oss1;
	oss1 << "Camera Z: " << camera.position.z;
	string var1 = oss1.str();

	std::ostringstream dia;
	dia << data[dialogue];
	string dialoguedata = dia.str();

	std::ostringstream diaV;
	diaV << data[dialogueVending];
	string dialogueV = diaV.str();

	std::ostringstream diaD;
	diaD << data[dialogueDoor];
	string dialogueD = diaD.str();

	std::ostringstream diaC;
	diaC << data[dialogueCoke];
	string dialogueC = diaC.str();

	std::ostringstream diaS;
	diaS << data[dialogueSteve];
	string dialogueS = diaS.str();

	std::ostringstream fpsOSS;
	fpsOSS << "FPS: " << deltaTime;
	string Fps = fpsOSS.str();

	std::ostringstream keyOSS;
	keyOSS << "Key: " << key1;
	string Key = keyOSS.str();

	std::ostringstream cokeOSS;
	cokeOSS << "Coke: " << coca;
	string Coke = cokeOSS.str();


	// Render VBO here
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	//Set view matrix using camera settings
	viewStack.LoadIdentity();
	viewStack.LookAt(
		camera.position.x, camera.position.y, camera.position.z,
		camera.target.x, camera.target.y, camera.target.z,
		camera.up.x, camera.up.y, camera.up.z
		);
	
	modelStack.LoadIdentity();
//new code
	if (light[0].type == Light::LIGHT_DIRECTIONAL)
	{
		Vector3 lightDir(light[0].position.x, light[0].position.y, light[0].position.z);
		Vector3 lightDirection_cameraspace = viewStack.Top() * lightDir;
		glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightDirection_cameraspace.x);
	}
	else if (light[0].type == Light::LIGHT_SPOT)
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[0].position;
		glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightPosition_cameraspace.x);
		Vector3 spotDirection_cameraspace = viewStack.Top() * light[0].spotDirection;
		glUniform3fv(m_parameters[U_LIGHT0_SPOTDIRECTION], 1, &spotDirection_cameraspace.x);
	}
	else
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[0].position;
		glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightPosition_cameraspace.x);
	}

	if (light[1].type == Light::LIGHT_DIRECTIONAL)
	{
		Vector3 lightDir(light[1].position.x, light[1].position.y, light[1].position.z);
		Vector3 lightDirection_cameraspace = viewStack.Top() * lightDir;
		glUniform3fv(m_parameters[U_LIGHT1_POSITION], 1, &lightDirection_cameraspace.x);
	}
	else if (light[1].type == Light::LIGHT_SPOT)
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[1].position;
		glUniform3fv(m_parameters[U_LIGHT1_POSITION], 1, &lightPosition_cameraspace.x);
		Vector3 spotDirection_cameraspace = viewStack.Top() * light[1].spotDirection;
		glUniform3fv(m_parameters[U_LIGHT1_SPOTDIRECTION], 1, &spotDirection_cameraspace.x);
	}
	else
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[1].position;
		glUniform3fv(m_parameters[U_LIGHT1_POSITION], 1, &lightPosition_cameraspace.x);
	}

	if (light[2].type == Light::LIGHT_DIRECTIONAL)
	{
		Vector3 lightDir(light[2].position.x, light[2].position.y, light[2].position.z);
		Vector3 lightDirection_cameraspace = viewStack.Top() * lightDir;
		glUniform3fv(m_parameters[U_LIGHT2_POSITION], 1, &lightDirection_cameraspace.x);
	}
	else if (light[2].type == Light::LIGHT_SPOT)
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[2].position;
		glUniform3fv(m_parameters[U_LIGHT2_POSITION], 1, &lightPosition_cameraspace.x);
		Vector3 spotDirection_cameraspace = viewStack.Top() * light[2].spotDirection;
		glUniform3fv(m_parameters[U_LIGHT2_SPOTDIRECTION], 1, &spotDirection_cameraspace.x);
	}
	else
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[2].position;
		glUniform3fv(m_parameters[U_LIGHT2_POSITION], 1, &lightPosition_cameraspace.x);
	}

	if (light[3].type == Light::LIGHT_DIRECTIONAL)
	{
		Vector3 lightDir(light[3].position.x, light[3].position.y, light[3].position.z);
		Vector3 lightDirection_cameraspace = viewStack.Top() * lightDir;
		glUniform3fv(m_parameters[U_LIGHT3_POSITION], 1, &lightDirection_cameraspace.x);
	}
	else if (light[3].type == Light::LIGHT_SPOT)
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[3].position;
		glUniform3fv(m_parameters[U_LIGHT3_POSITION], 1, &lightPosition_cameraspace.x);
		Vector3 spotDirection_cameraspace = viewStack.Top() * light[3].spotDirection;
		glUniform3fv(m_parameters[U_LIGHT3_SPOTDIRECTION], 1, &spotDirection_cameraspace.x);
	}
	else
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[3].position;
		glUniform3fv(m_parameters[U_LIGHT3_POSITION], 1, &lightPosition_cameraspace.x);
	}

	if (light[4].type == Light::LIGHT_DIRECTIONAL)
	{
		Vector3 lightDir(light[4].position.x, light[4].position.y, light[4].position.z);
		Vector3 lightDirection_cameraspace = viewStack.Top() * lightDir;
		glUniform3fv(m_parameters[U_LIGHT4_POSITION], 1, &lightDirection_cameraspace.x);
	}
	else if (light[4].type == Light::LIGHT_SPOT)
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[4].position;
		glUniform3fv(m_parameters[U_LIGHT4_POSITION], 1, &lightPosition_cameraspace.x);
		Vector3 spotDirection_cameraspace = viewStack.Top() * light[4].spotDirection;
		glUniform3fv(m_parameters[U_LIGHT4_SPOTDIRECTION], 1, &spotDirection_cameraspace.x);
	}
	else
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[4].position;
		glUniform3fv(m_parameters[U_LIGHT4_POSITION], 1, &lightPosition_cameraspace.x);
	}

	if (light[5].type == Light::LIGHT_DIRECTIONAL)
	{
		Vector3 lightDir(light[5].position.x, light[5].position.y, light[5].position.z);
		Vector3 lightDirection_cameraspace = viewStack.Top() * lightDir;
		glUniform3fv(m_parameters[U_LIGHT5_POSITION], 1, &lightDirection_cameraspace.x);
	}
	else if (light[5].type == Light::LIGHT_SPOT)
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[5].position;
		glUniform3fv(m_parameters[U_LIGHT5_POSITION], 1, &lightPosition_cameraspace.x);
		Vector3 spotDirection_cameraspace = viewStack.Top() * light[5].spotDirection;
		glUniform3fv(m_parameters[U_LIGHT5_SPOTDIRECTION], 1, &spotDirection_cameraspace.x);
	}
	else
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[5].position;
		glUniform3fv(m_parameters[U_LIGHT5_POSITION], 1, &lightPosition_cameraspace.x);
	}

	modelStack.PushMatrix();
	modelStack.Translate(light[0].position.x, light[0].position.y, light[0].position.z);
	RenderMesh(meshList[GEO_LIGHTBALL], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(light[1].position.x, light[1].position.y, light[1].position.z);
	RenderMesh(meshList[GEO_LIGHTBALL], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(light[2].position.x, light[2].position.y, light[2].position.z);
	RenderMesh(meshList[GEO_LIGHTBALL], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(light[3].position.x, light[3].position.y, light[3].position.z);
	RenderMesh(meshList[GEO_LIGHTBALL], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(light[4].position.x, light[4].position.y, light[4].position.z);
	RenderMesh(meshList[GEO_LIGHTBALL], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(light[5].position.x, light[5].position.y, light[5].position.z);
	RenderMesh(meshList[GEO_LIGHTBALL], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(0, 1, 0);

	
	//Move skybox
	modelStack.PushMatrix();
	modelStack.Translate(0 + camera.position.x, 0, -90 + camera.position.z + 50);
	RenderSkybox();
	modelStack.PopMatrix();
	
	modelStack.PushMatrix();
	modelStack.Translate(0, 0, 0);
	modelStack.PushMatrix();
	//scale, translate, rotate
	modelStack.Translate(0, -20, 0);
	modelStack.Rotate(180, 1, 0, 0);
	modelStack.Scale(1000, 1, 1000);
	RenderMesh(meshList[GEO_QUAD], true);
	modelStack.PopMatrix();

	if (door)
	{
		RenderTextOnScreen(meshList[GEO_TEXT], dialogueD, Color(1, 1, 0), 2, 6, 10);
	}

	if (santa)
	{
		RenderTextOnScreen(meshList[GEO_TEXT], dialoguedata, Color(1, 1, 0), 2, 6, 10);
	}

	if (showV)
	{
		RenderTextOnScreen(meshList[GEO_TEXT], dialogueV, Color(1, 1, 0), 2, 6, 10);
	}

	if (showC)
	{
		RenderTextOnScreen(meshList[GEO_TEXT], dialogueC, Color(1, 1, 0), 2, 6, 10);
	}

	if (showS)
	{
		RenderTextOnScreen(meshList[GEO_TEXT], dialogueS, Color(1, 1, 0), 2, 6, 10);
	}


	if (showInstructions)
	{
		RenderTextOnScreen(meshList[GEO_TEXT], "Up,down,left,right to shift character view" , Color(1, 0, 0), 1.7, 2, 21);
		RenderTextOnScreen(meshList[GEO_TEXT], "W, A, S, D to move", Color(1, 0, 0), 1.7, 2, 20);
		RenderTextOnScreen(meshList[GEO_TEXT], "Z/X to on/off light", Color(1, 0, 0), 1.7, 2, 19);

		RenderTextOnScreen(meshList[GEO_TEXT], "Move near to objects to see interaction", Color(1, 0, 1), 1.7, 2, 17);
		RenderTextOnScreen(meshList[GEO_TEXT], "Interactions: Door,NPC,Vending machine,Coke", Color(1, 0, 1), 1.7, 2, 16);
		RenderTextOnScreen(meshList[GEO_TEXT], "Different things happens based on your choice", Color(1, 0, 1), 1.7, 2, 14);


	}


	modelStack.PushMatrix();
	//scale, translate, rotate
	modelStack.Translate(-10, 3, -60);
	RenderText(meshList[GEO_TEXT], "", Color(0, 1, 0));
	modelStack.PushMatrix();
	//scale, translate, rotate
	modelStack.Translate(25, 0, 0);
	RenderText(meshList[GEO_TEXT], "", Color(0, 1, 0));
	modelStack.PopMatrix();
	modelStack.PopMatrix();
	modelStack.PopMatrix();

	RenderTextOnScreen(meshList[GEO_TEXT], "Hold V for instructions", Color(1, 1, 0), 2, 1, 4);
	RenderTextOnScreen(meshList[GEO_TEXT], Fps, Color(1, 1, 0), 2, 1, 29);
	RenderTextOnScreen(meshList[GEO_TEXT], var, Color(1, 1, 0), 2, 1, 3);
	RenderTextOnScreen(meshList[GEO_TEXT], var1, Color(1, 1, 0), 2, 1, 2);
	RenderTextOnScreen(meshList[GEO_TEXT], Key, Color(1, 1, 0),2,1,1);
	RenderTextOnScreen(meshList[GEO_TEXT], Coke, Color(1, 1, 0), 2, 8, 1);

	modelStack.PopMatrix();
}
void SceneText::Render()
{
    // Clear color & depth buffer every frame
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    viewStack.LoadIdentity();
    viewStack.LookAt(
        camera.position.x, camera.position.y, camera.position.z,
        camera.target.x, camera.target.y, camera.target.z,
        camera.up.x, camera.up.y, camera.up.z
    );
    modelStack.LoadIdentity();

    if (light[0].type == Light::LIGHT_DIRECTIONAL) {
        Vector3 lightDir(light[0].position.x, light[0].position.y, light[0].position.z);
        Vector3 lightDirection_cameraspace = viewStack.Top() * lightDir;
        glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightDirection_cameraspace.x);
    }
    else if (light[0].type == Light::LIGHT_SPOT) {
        Position lightPosition_cameraspace = viewStack.Top() * light[0].position;
        glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightPosition_cameraspace.x);
        Vector3 spotDirection_cameraspace = viewStack.Top() * light[0].spotDirection;
        glUniform3fv(m_parameters[U_LIGHT0_SPOTDIRECTION], 1, &spotDirection_cameraspace.x);
    }
    else {
        Position lightPosition_cameraspace = viewStack.Top() * light[0].position;
        glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightPosition_cameraspace.x);
    }

    //RENDER OBJECTS
    RenderMesh(meshList[GEO_AXES], false);

    modelStack.PushMatrix();
    modelStack.Translate(camera.position.x, camera.position.y, camera.position.z);
    RenderSkybox();
    modelStack.PopMatrix();

    modelStack.PushMatrix();
    modelStack.Translate(
        light[0].position.x,
        light[0].position.y,
        light[0].position.z
    );
    RenderMesh(meshList[GEO_LIGHTBALL], false);
    modelStack.PopMatrix();

    //OBJs with transparency to be rendered Last

    modelStack.PushMatrix();
    modelStack.Scale(10, 10, 10);
    RenderText(meshList[GEO_TEXT], "Darrus is gay", Color(0, 1, 0));
    modelStack.PopMatrix();

    RenderTextOnScreen(meshList[GEO_TEXT], "Hello World", Color(0, 1, 0), 5, 0, 0);

    //modelStack.PushMatrix();
    //modelStack.Translate(0, 0, 0);
    //RenderMesh(meshList[GEO_MODEL1], true);
    //modelStack.PopMatrix();

    //modelStack.PushMatrix();
    //modelStack.Translate(0, 5, 0);
    //RenderMesh(meshList[GEO_MODEL2], true);
    //modelStack.PopMatrix();

    //modelStack.PushMatrix();
    //modelStack.Translate(0, 10, 0);
    //RenderMesh(meshList[GEO_MODEL3], true);
    //modelStack.PopMatrix();

    //modelStack.PushMatrix();
    //modelStack.Translate(0, 15, 0);
    //RenderMesh(meshList[GEO_MODEL4], true);
    //modelStack.PopMatrix();

    //modelStack.PushMatrix();
    //modelStack.Translate(0, 20, 0);
    //RenderMesh(meshList[GEO_MODEL5], true);
    //modelStack.PopMatrix();

    //modelStack.PushMatrix();
    //modelStack.Translate(0, 25, 0);
    //RenderMesh(meshList[GEO_MODEL6], true);
    //modelStack.PopMatrix();

    modelStack.PushMatrix();
    modelStack.Translate(0, 40, 0);
    //RenderMesh(meshList[GEO_VEHICLE_SPACE_AIR], true);
    modelStack.PopMatrix();

    modelStack.PushMatrix();
    modelStack.Translate(0, 0, 0);
    //RenderMesh(meshList[GEO_VEHICLE_SPACE_LAND], true);
    modelStack.PopMatrix();
}
Beispiel #8
0
void Assignment3::Render()
{
	// Render VBO here
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	//Set view matrix using camera settings
	viewStack.LoadIdentity();
	viewStack.LookAt(
		camera.position.x, camera.position.y, camera.position.z,
		camera.target.x, camera.target.y, camera.target.z,
		camera.up.x, camera.up.y, camera.up.z
		);

	modelStack.LoadIdentity();

	if (light[0].type == Light::LIGHT_DIRECTIONAL)
	{
		Vector3 lightDir(light[0].position.x, light[0].position.y, light[0].position.z);
		Vector3 lightDirection_cameraspace = viewStack.Top() * lightDir;
		glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightDirection_cameraspace.x);
	}
	else if (light[0].type == Light::LIGHT_SPOT)
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[0].position;
		glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightPosition_cameraspace.x);
		Vector3 spotDirection_cameraspace = viewStack.Top() * light[0].spotDirection;
		glUniform3fv(m_parameters[U_LIGHT0_SPOTDIRECTION], 1, &spotDirection_cameraspace.x);
	}
	else
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[0].position;
		glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightPosition_cameraspace.x);
	}


	if (light[1].type == Light::LIGHT_DIRECTIONAL)
	{
		Vector3 lightDir(light[1].position.x, light[1].position.y, light[1].position.z);
		Vector3 lightDirection_cameraspace = viewStack.Top() * lightDir;
		glUniform3fv(m_parameters[U_LIGHT1_POSITION], 1, &lightDirection_cameraspace.x);
	}
	else if (light[1].type == Light::LIGHT_SPOT)
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[1].position;
		glUniform3fv(m_parameters[U_LIGHT1_POSITION], 1, &lightPosition_cameraspace.x);
		Vector3 spotDirection_cameraspace = viewStack.Top() * light[1].spotDirection;
		glUniform3fv(m_parameters[U_LIGHT1_SPOTDIRECTION], 1, &spotDirection_cameraspace.x);
	}
	else
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[0].position;
		glUniform3fv(m_parameters[U_LIGHT1_POSITION], 1, &lightPosition_cameraspace.x);
	}
	//skybox
	RenderSkybox();

	//axes
	//RenderMesh(meshList[GEO_AXES], false);

	//floor
	modelStack.PushMatrix();
	modelStack.Translate(0, -1, 0);
	modelStack.Scale(100, 1, 100);
	RenderMesh(meshList[GEO_QUAD], true);
	modelStack.PopMatrix();

	//SHIP
	modelStack.PushMatrix();
	modelStack.Translate(SHIP.x,SHIP.y,SHIP.z);
	modelStack.Rotate(4, 0, 0, 1);
	modelStack.Translate(0, -1, 0);
	RenderMesh(meshList[GEO_MODEL1], true);
	modelStack.PopMatrix();
	
	//FLAG
	modelStack.PushMatrix();
	modelStack.Translate(FLAG.x,FLAG.y,FLAG.z);
	modelStack.Rotate(-flagRotate, 0, 0, 1);
	modelStack.Rotate(90, 0, 1, 0);
	RenderMesh(meshList[GEO_MODEL2], true);
	modelStack.PopMatrix();

	//CRATERS;
	for (int i = 0; i < 3; ++i)
	{
		if (i == 0)
		{
			modelStack.PushMatrix();
			modelStack.Translate(0, -0.5, 0);
			modelStack.Scale(2, 2, 2);
			RenderMesh(meshList[GEO_CRATER], true);
			modelStack.PopMatrix();
		}
		else if (i == 1)
		{
			modelStack.PushMatrix();
			modelStack.Translate(30, -0.5, 5);
			modelStack.Scale(3, 2, 3);
			RenderMesh(meshList[GEO_CRATER], true);
			modelStack.PopMatrix();
		}
		else
		{
			for (int j = 0; j < 2; ++j)
			{
				modelStack.PushMatrix();
				modelStack.Translate(-20, -0.5, 10 - j*20);
				modelStack.Scale(3, 2, 3);
				RenderMesh(meshList[GEO_CRATER], true);
				modelStack.PopMatrix();
			}
		}
	}

	// ROCKS AT PERIMETER
	for (int i = 0; i < 2; ++i)
	{
		for (int j = 0; j < 11; ++j)
		{
			modelStack.PushMatrix();
			modelStack.Translate(-50 + j * 10, 1, -50 + 100*i);
			modelStack.Scale(10, 5, 10);
			RenderMesh(meshList[GEO_BOULDER], true);
			modelStack.PopMatrix();
		}
	}
	for (int i = 0; i < 2; ++i)
	{
		for (int j = 0; j < 11; ++j)
		{
			modelStack.PushMatrix();
			modelStack.Translate(-50 + i*100, 1, -50 + j * 10);
			modelStack.Scale(10, 5, 10);
			RenderMesh(meshList[GEO_BOULDER], true);
			modelStack.PopMatrix();
		}
	}

	//MOONBASE
	
	for (int j = 0; j < 3; ++j)
	{
		for (int i = -1; i < j; ++i)
		{
			modelStack.PushMatrix();
			modelStack.Translate(3 - i*10, -0.9, -25 - 7 * j);
			modelStack.Rotate(-135 + j*45 - i*45, 0, 1, 0);
			modelStack.Scale(1 + j*0.5, 1 + j*0.5, 1 + j*0.5);
			RenderMesh(meshList[GEO_TENT], true);
			modelStack.PopMatrix();
		}
	}
	modelStack.PushMatrix();
	modelStack.Translate(5, 0, -20);
	modelStack.PushMatrix();
	modelStack.Translate(4, 0, -0.5);
	modelStack.Scale(10, 2, 1);
	RenderMesh(meshList[GEO_SIGN], true);
	modelStack.PopMatrix();
	RenderText(meshList[GEO_TEXT], "MOON BASE", Color(1, 1, 0));
	modelStack.PopMatrix();

	// HELMET

	modelStack.PushMatrix();
	RenderModelOnScreen(meshList[GEO_HELMET], true, 120, 0.35, 0.2 + helmetY + helmetUP);
	RenderTextOnScreen(meshList[GEO_TEXT], framerate.str(), Color(0, 1, 1), 3, 1, 1 + helmetY * 40 + helmetUP * 40);
	RenderTextOnScreen(meshList[GEO_TEXT], "Push F to take off helmet", Color(0, 1, 1), 3, 1, 18.5 + helmetY * 40 + helmetUP * 40);
	if (displayMore == false)
	{
		RenderTextOnScreen(meshList[GEO_TEXT], "(Press 'U' to see more info)", Color(0, 1, 1), 2.5, 1, 20.5 + helmetY * 48 + helmetUP * 48);
	}
	else
	{
		RenderTextOnScreen(meshList[GEO_TEXT], "UI only available with helmet on", Color(0, 1, 1), 2, 1, 20.5 + helmetY * 60 + helmetUP * 60);
		RenderTextOnScreen(meshList[GEO_TEXT], "Some things can only be seen without the helmet", Color(1, 0, 0), 2, 1, 18.5 + helmetY * 60 + helmetUP * 60);
		RenderTextOnScreen(meshList[GEO_TEXT], "The flag may be scaring extraterrestial life!", Color(0, 1, 0), 2, 1, 16.5 + helmetY * 60 + helmetUP * 60);
		RenderTextOnScreen(meshList[GEO_TEXT], "Press 'R' to reset", Color(0, 1, 1), 2, 1, 14.5 + helmetY * 60 + helmetUP * 60);
	}
	RenderTextOnScreen(meshList[GEO_TEXT], "PD ENTERTAINMENT INC.", Color(0, 1, 0), 2, 1, -15 + helmetY * 60 + helmetUP * 60);
	if (camera.position.x > SHIP.x - 6.f && camera.position.x < SHIP.x + 6.f
		&& camera.position.z > SHIP.z - 6.f && camera.position.z < SHIP.z + 6.f
		&& shipFlew == false)
	{
		RenderTextOnScreen(meshList[GEO_TEXT], "Press 'E'", Color(0, 1, 0), shipNotiSize, 3, 5 + helmetY * 20 + helmetUP * 20);
	}

	framerate.str("");
	modelStack.PopMatrix();

	//ALIEN

	for (int j = 0; j < 6; ++j)
	{
		for (int i = -1 - j; i < 2 + j; ++i)
		{
			modelStack.PushMatrix();
			modelStack.Translate(i* -3, alienY, 5 + j * 5);
			modelStack.Rotate(0, 0, 0, 1);
			RenderAlien();
			modelStack.PopMatrix();
		}
	}
	
}
Beispiel #9
0
void Indoor3::Render()
{

	if (light[0].type == Light::LIGHT_DIRECTIONAL)
	{
		Vector3 lightDir(light[0].position.x, light[0].position.y, light[0].position.z);
		Vector3 lightDirection_cameraspace = viewStack.Top() * lightDir;
		glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightDirection_cameraspace.x);
	}
	else if (light[0].type == Light::LIGHT_SPOT)
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[0].position;
		glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightPosition_cameraspace.x);
		Vector3 spotDirection_cameraspace = viewStack.Top() * light[0].spotDirection;
		glUniform3fv(m_parameters[U_LIGHT0_SPOTDIRECTION], 1, &spotDirection_cameraspace.x);
	}
	else
	{
		Position lightPosition_cameraspace = viewStack.Top() * light[0].position;
		glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightPosition_cameraspace.x);
	}


	// Render VBO here
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	//Temp variables
	Mtx44 MVP;
	viewStack.LoadIdentity();
	viewStack.LookAt(camera.position.x, camera.position.y,
		camera.position.z, camera.target.x, camera.target.y,
		camera.target.z, camera.up.x, camera.up.y, camera.up.z);
	modelStack.LoadIdentity();

	Position lightPosition_cameraspace = viewStack.Top() * light[0].position;
	glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightPosition_cameraspace.x);

	RenderSkybox();
	//RenderMesh(meshList[GEO_AXES], false);

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(50, 0, -50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(0, 0, -50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-50, 0, -50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(50, 0, 0);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(50, 0, 50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(0, 0, 50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-50, 0, 50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-100, 0, 50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-150, 0, 50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-200, 0, 50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-250, 0, 50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-300, 0, 50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-350, 0, 50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-400, 0, 50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	// ----------------Extended crate
	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-460, 0, 50);
	modelStack.Scale(70, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-100, 0, -50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-150, 0, -50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-200, 0, -50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-250, 0, -50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-300, 0, -50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-400, 0, -50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-400, 0, -100);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-400, 0, -150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-460, 0, -150);
	modelStack.Scale(70, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();
	/////
	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(0, 0, -250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-50, 0, -250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-100, 0, -250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-150, 0, -250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-200, 0, -250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-250, 0, -250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-300, 0, -250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-350, 0, -250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-400, 0, -250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	// ----------------Extended crate
	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-460, 0, -250);
	modelStack.Scale(70, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();
	////////////
	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(200, 0, -150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(150, 0, -150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(100, 0, -150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(50, 0, -150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(0, 0, -150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-50, 0, -150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-100, 0, -150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-150, 0, -150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-200, 0, -150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-250, 0, -150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-300, 0, -150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();
	///////////
	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(200, 0, -100);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(200, 0, -50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();
	/////
	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(200, 0, 0);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(200, 0, 50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(200, 0, 100);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();
	///////////
	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(200, 0, 150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(150, 0, 150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(100, 0, 150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(50, 0, 150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(0, 0, 150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-50, 0, 150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-100, 0, 150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-150, 0, 150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-300, 0, 150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-350, 0, 150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-400, 0, 150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	// ----------------Extended crate
	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-460, 0, 150);
	modelStack.Scale(70, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();
	//////
	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-150, 0, 200);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-150, 0, 250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-200, 0, 250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-250, 0, 250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-300, 0, 250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-350, 0, 250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-400, 0, 250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	// ----------------Extended crate
	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(-460, 0, 250);
	modelStack.Scale(70, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();
	/////
	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(100, 0, -200);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(100, 0, -250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(100, 0, -300);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(100, 0, -350);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(100, 0, -400);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();
	/////
	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(350, 0, -150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(350, 0, -200);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(350, 0, -250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(350, 0, -300);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(350, 0, -350);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(350, 0, -400);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(350, 0, -450);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(350, 0, -490);
	modelStack.Scale(50, 50, 30);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();
	/////
	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(350, 0, 0);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(350, 0, 50);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(350, 0, 100);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(350, 0, 150);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(350, 0, 200);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(350, 0, 250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();
	/////
	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(300, 0, 250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(250, 0, 250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(200, 0, 250);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();
	////
	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(200, 0, 300);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(200, 0, 350);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(200, 0, 400);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Rotate(-70, 0, 1, 0);
	modelStack.Translate(200, 0, 450);
	modelStack.Scale(50, 50, 50);
	RenderMesh(meshList[GEO_CRATE], false);
	modelStack.PopMatrix();
}
Beispiel #10
0
void Assignment3::Render()
{
	// Render VBO here
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	//Temp variables
	Mtx44 translate, rotate, scale;
	Mtx44 MVP;

	//These will be replaced by matrix stack soon
	Mtx44 model;
	Mtx44 view;
	Mtx44 projection;

	//Set all matrices to identity
	translate.SetToIdentity();
	rotate.SetToIdentity();
	scale.SetToIdentity();
	model.SetToIdentity();

	//Set view matrix using camera settings
	viewStack.LoadIdentity();
	viewStack.LookAt(
		camera.position.x, camera.position.y, camera.position.z,
		camera.target.x, camera.target.y, camera.target.z,
		camera.up.x, camera.up.y, camera.up.z
		);

	//Set projection matrix to perspective mode
	projection.SetToPerspective(45.0f, 4.0f / 3.0f, 0.1f, 10000.0f); //FOV, Aspect Ratio, Near plane, Far plane
	lighting();
	lighting2();
	modelStack.PushMatrix();
	modelStack.Translate(light[0].position.x, light[0].position.y, light[0].position.z);
	modelStack.Scale(0.1f, 0.1f, 0.1f);
	renderMesh(meshList[GEO_LIGHTBALL], false);
	modelStack.PopMatrix();
	

	/*modelStack.PushMatrix();
	renderMesh(meshList[GEO_AXES], false);
	modelStack.PopMatrix();*/

	modelStack.PushMatrix();
	modelStack.Translate(boxX, 496.9, boxZ);
	RenderSkybox();
	modelStack.PopMatrix();


	modelStack.PushMatrix();
	modelStack.Translate(snowWallCoord.x, 0, snowWallCoord.z);
	modelStack.Rotate(-90, 0, 1, 0);
	//modelStack.Scale(10, 10, 10);
	renderMesh(meshList[GEO_SNOWWALL], true);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(snowBallCoord.x, snowBallCoord.y, snowBallCoord.z);
	modelStack.Scale(0.2, 0.2, 0.2);
	renderMesh(meshList[GEO_SNOWBALLPILE], true);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(snowBallCoord1.x, snowBallCoord1.y, snowBallCoord1.z);
	modelStack.Scale(0.2, 0.2, 0.2);
	renderMesh(meshList[GEO_SNOWBALLPILE], true);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(snowBallCoord2.x, snowBallCoord2.y, snowBallCoord2.z);
	modelStack.Scale(0.2, 0.2, 0.2);
	renderMesh(meshList[GEO_SNOWBALLPILE], true);
	modelStack.PopMatrix();


	modelStack.PushMatrix();
	modelStack.Translate(snowBallCoord5.x, snowBallCoord5.y, snowBallCoord5.z);
	modelStack.Scale(0.2, 0.2, 0.2);
	renderMesh(meshList[GEO_SNOWBALLPILE], true);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(snowBallCoord6.x, snowBallCoord6.y, snowBallCoord6.z);
	modelStack.Scale(0.2, 0.2, 0.2);
	renderMesh(meshList[GEO_SNOWBALLPILE], true);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(robbyCoord.x, robbyCoord.y, robbyCoord.z);
	modelStack.Scale(0.5, 0.5, 0.5);
	modelStack.Rotate(robbyRotate, 0, 1, 0);
	modelStack.Rotate(-90, 0, 1, 0);
	renderMesh(meshList[GEO_ROBBY], true);
	modelStack.PopMatrix();
	modelStack.PushMatrix();
	modelStack.Translate(0, -1, 0);
	modelStack.Rotate(-90, 0, 1, 0);
	modelStack.Scale(1500, 1500, 1500);
	renderMesh(meshList[GEO_BOTTOM], true);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(snowBarricadeCoord.x, snowBarricadeCoord.y, snowBarricadeCoord.z);
	renderMesh(meshList[GEO_SNOWBARRICADE], true);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	//modelStack.Translate(snowBarricadeCoord.x, snowBarricadeCoord.y, snowBarricadeCoord.z);
	modelStack.Scale(7.5, 7.5, 7.5);
	renderMesh(meshList[GEO_SNOWFORT], true);
	modelStack.PopMatrix();

	if (throwSnowball == true)
	{
		modelStack.PushMatrix();
		modelStack.Translate(ballCoord.x, ballCoord.y, ballCoord.z);
		modelStack.Scale(0.2, 0.2, 0.2);
		renderMesh(meshList[GEO_SPHERE], true);
		modelStack.PopMatrix();
	}
	

	std::stringstream playerPos;
	playerPos << "X = " << camPosX << " Y = " << camPosY << " Z = " << camPosz;
	//RenderTextOnScreen(meshList[GEO_TEXT], playerPos.str(), Color(1, 0, 0), 2, 0, 18);
	std::stringstream ss;
	ss << "FPS:" << fps<<"         "<<playerPos.str();
	RenderTextOnScreen(meshList[GEO_TEXT], ss.str(), Color(0, 1, 0), 3, 0, 19);
	std::stringstream snowballcount;
	snowballcount << "Snow Ball Count: " << snowBallCount;
	RenderTextOnScreen(meshList[GEO_TEXT], snowballcount.str(), Color(0, 1, 0), 3, 0, 1);
	
	if (showdialog1 == true)
	{
		RenderTextOnScreen(meshList[GEO_TEXT], "Hi Pingu, can you get me 1 snowball?", Color(1, 0, 1), 2, 0, 15);
	}
	if (showdialog2 == true)
	{
		RenderTextOnScreen(meshList[GEO_TEXT], "Thank You!", Color(1, 0, 1), 2, 0, 15);
	}
	if (showdialog3 == true || showdialog5 == true || showdialog7 == true || showdialog13 == true || showdialog15 == true)
	{
		RenderTextOnScreen(meshList[GEO_TEXT], "Gained 1 Snow Ball, Max capacity", Color(1, 0, 1), 2, 0, 15);
	}
	if (showdialog4 == true || showdialog6 == true || showdialog8 == true || showdialog14 == true || showdialog16 == true)
	{
		RenderTextOnScreen(meshList[GEO_TEXT], "You can only hold 1 Snow Ball!", Color(1, 0, 1), 2, 0, 15);
	}
	if (isHit == true)
	{
		RenderTextOnScreen(meshList[GEO_TEXT], "NICE SHOT", Color(1, 0, 1), 3, 0, 18);
	}
}