Ejemplo n.º 1
0
/********************************************************************************
 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
}
Ejemplo n.º 2
0
void InstructionScene::Render()
{
	SceneBase::Render();
	modelStack.PushMatrix();
	modelStack.Scale(m_window_width, m_window_height, 1);
	RenderMeshIn2D(meshList[GEO_INSTRUCTIONS], false);
	modelStack.PopMatrix();
}
Ejemplo n.º 3
0
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);
	
}
Ejemplo n.º 4
0
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();
	}
}
Ejemplo n.º 5
0
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);
}