/******************************************************************************** Render this scene ********************************************************************************/ void CSceneSplash::Render() { CSceneManager::Render(); //glUseProgram(0); //glUseProgram(m_programID); RenderMeshIn2D(meshList[GEO_BEAM], false, m_fBeamScaleX, 1.f, 0.f, 25.f); RenderMeshIn2D(meshList[GEO_BEAM], false, m_fBeamScaleX, 1.f, 0.f, -25.f); if (m_bDoShake) { RenderMeshIn2D(meshList[GEO_CHAR_1], false, 1.f, 1.f, -25.f + m_fShakeOffsetX * 0.1f, m_fLogo1PosY + m_fShakeOffsetY * 0.11f); RenderMeshIn2D(meshList[GEO_CHAR_2], false, 1.f, 1.f, -5.f - m_fShakeOffsetX * 0.09f, m_fLogo2PosY - m_fShakeOffsetY * 0.1f); RenderMeshIn2D(meshList[GEO_CHAR_3], false, 1.f, 1.f, 25.f + m_fShakeOffsetX * 0.11f, m_fLogo3PosY - m_fShakeOffsetY * 0.09f); } else { RenderMeshIn2D(meshList[GEO_CHAR_1], false, 1.f, 1.f, -25.f, m_fLogo1PosY ); RenderMeshIn2D(meshList[GEO_CHAR_2], false, 1.f, 1.f, -5.f, m_fLogo2PosY); RenderMeshIn2D(meshList[GEO_CHAR_3], false, 1.f, 1.f, 25.f, m_fLogo3PosY); } //RenderMeshIn2D(meshList[GEO_GRADIENT], false, m_fGradientScale, m_fGradientScale, 0.f, 0.f); #if _DEBUG //RenderTextOnScreen(meshList[GEO_TEXT], "SceneSplash", Color(1.f, 1.f, 1.f), 20.f, -160.f, 70.f); //std::ostringstream ss; //ss.precision(5); //ss << fps; //RenderTextOnScreen(meshList[GEO_TEXT], ss.str(), Color(1.f, 1.f, 1.f), 20.f, -160.f, -100.f); #endif }
void InstructionScene::Render() { SceneBase::Render(); modelStack.PushMatrix(); modelStack.Scale(m_window_width, m_window_height, 1); RenderMeshIn2D(meshList[GEO_INSTRUCTIONS], false); modelStack.PopMatrix(); }
void HighscoreScene::Render() { SceneBase::Render(); modelStack.PushMatrix(); modelStack.Scale(m_window_width, m_window_height, 1); RenderMeshIn2D(meshList[GEO_HIGHSCORE], false); modelStack.PopMatrix(); std::ostringstream ss; ss << CGameStateManager::highscore; RenderTextOnScreen(meshList[GEO_TEXT], ss.str(), Color(0, 1, 0), 10, 35, 8); }
void SceneBase::RenderGameObject(CGameObject * go, bool enableLight, bool in2D) { if (go && go->GetMesh() && go->GetRender()) { modelStack.PushMatrix(); modelStack.Translate(go->GetTransform().GetTranslate().x, go->GetTransform().GetTranslate().y, go->GetTransform().GetTranslate().z); modelStack.Rotate(go->GetTransform().GetRotate().x, 1, 0, 0); modelStack.Rotate(go->GetTransform().GetRotate().y, 0, 1, 0); modelStack.Rotate(go->GetTransform().GetRotate().z, 0, 0, 1); modelStack.Scale(go->GetTransform().GetScale().x, go->GetTransform().GetScale().y, go->GetTransform().GetScale().z); if (in2D) { RenderMeshIn2D(go->GetMesh(), m_lightEnabled); } else { RenderMesh(go->GetMesh(), m_lightEnabled); } modelStack.PopMatrix(); } }
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); }