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); }
/*** 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(); }
void CGmObjSkybox::Proc() { if( m_bIsValid ) RenderSkybox( true ); }
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(); }
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(); }
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(); } } }
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(); }
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); } }