Ajouts textures et blend.
This commit is contained in:
		@@ -35,6 +35,19 @@ void Engine::Init()
 | 
			
		||||
	glLightfv(GL_LIGHT0, GL_DIFFUSE, light0Diff);
 | 
			
		||||
	glLightfv(GL_LIGHT0, GL_SPECULAR, light0Spec);
 | 
			
		||||
 | 
			
		||||
	// Lumi<6D>re de Skybox.
 | 
			
		||||
	GLfloat light1Pos[4] = { 0.0f, 0.0f, 0.0f, 2.0f };
 | 
			
		||||
	GLfloat light1Amb[4] = { 1.5f, 1.5f, 1.5f, 1.5f };
 | 
			
		||||
	GLfloat light1Diff[4] = { 1.f, 1.f, 1.f, 1.f };
 | 
			
		||||
	GLfloat light1Spec[4] = { 1.f, 1.f, 1.f, 1.0f };
 | 
			
		||||
	glLightfv(GL_LIGHT1, GL_POSITION, light1Pos);
 | 
			
		||||
	glLightfv(GL_LIGHT1, GL_AMBIENT, light1Amb);
 | 
			
		||||
	glLightfv(GL_LIGHT1, GL_DIFFUSE, light1Diff);
 | 
			
		||||
	glLightfv(GL_LIGHT1, GL_SPECULAR, light1Spec);
 | 
			
		||||
 | 
			
		||||
	// Blend
 | 
			
		||||
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 | 
			
		||||
 | 
			
		||||
	CenterMouse();
 | 
			
		||||
	HideCursor();
 | 
			
		||||
}
 | 
			
		||||
@@ -44,7 +57,10 @@ void Engine::DeInit() { }
 | 
			
		||||
void Engine::LoadResource() {
 | 
			
		||||
	LoadTexture(m_textureFloor, TEXTURE_PATH "grass.png");
 | 
			
		||||
	LoadTexture(m_textureSkybox, TEXTURE_PATH "skybox.png");
 | 
			
		||||
	LoadTexture(m_textureCube, TEXTURE_PATH "metal.png");
 | 
			
		||||
	LoadTexture(m_textureCube1, TEXTURE_PATH "metal1.png");
 | 
			
		||||
	LoadTexture(m_textureCube2, TEXTURE_PATH "metal2.png");
 | 
			
		||||
	LoadTexture(m_textureCube3, TEXTURE_PATH "metal3.png");
 | 
			
		||||
	LoadTexture(m_textureCube4, TEXTURE_PATH "metal4.png");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Engine::UnloadResource()
 | 
			
		||||
@@ -66,7 +82,7 @@ void Engine::Render(float elapsedTime)
 | 
			
		||||
	glMatrixMode(GL_MODELVIEW);
 | 
			
		||||
	glLoadIdentity();
 | 
			
		||||
 | 
			
		||||
	m_player.Move(m_keyW, m_keyS, m_keyA, m_keyD, m_keySpace, elapsedTime);
 | 
			
		||||
	m_player.Move(m_keyW, m_keyS, m_keyA, m_keyD, m_keySpace, m_keylshift, elapsedTime);
 | 
			
		||||
	m_player.ApplyTransformation(all);
 | 
			
		||||
	m_player.ApplyTransformation(skybox, false); // Version d'ApplyTransformation qui ne tient compte que de la rotation (donc l'objet ne bouge pas relativement au joueur, ce qui est pratique pour une skybox!).
 | 
			
		||||
 | 
			
		||||
@@ -74,6 +90,8 @@ void Engine::Render(float elapsedTime)
 | 
			
		||||
	skybox.Use();
 | 
			
		||||
	m_textureSkybox.Bind();
 | 
			
		||||
	glDisable(GL_DEPTH_TEST); // Pour que tout ce qui est dessin<69> apr<70>s soit dessin<69> par-dessus la skybox.
 | 
			
		||||
	glDisable(GL_LIGHT0);
 | 
			
		||||
	glEnable(GL_LIGHT1);
 | 
			
		||||
	glBegin(GL_QUADS);
 | 
			
		||||
 | 
			
		||||
	glTexCoord2f(0, .75f);
 | 
			
		||||
@@ -132,12 +150,14 @@ void Engine::Render(float elapsedTime)
 | 
			
		||||
 | 
			
		||||
	glEnd();
 | 
			
		||||
	glEnable(GL_DEPTH_TEST);
 | 
			
		||||
	all.Use();
 | 
			
		||||
	glDisable(GL_LIGHT1);
 | 
			
		||||
	glEnable(GL_LIGHT0);
 | 
			
		||||
 | 
			
		||||
	// Plancher
 | 
			
		||||
	// Les vertex doivent etre affiches dans le sens anti-horaire (CCW)
 | 
			
		||||
	all.Use();
 | 
			
		||||
	m_textureFloor.Bind();
 | 
			
		||||
	float nbRep = 1.f;
 | 
			
		||||
	float nbRep = 5.f;
 | 
			
		||||
	glBegin(GL_QUADS);
 | 
			
		||||
	glNormal3f(0, 1, 0); // Normal vector
 | 
			
		||||
	glTexCoord2f(0, 0);
 | 
			
		||||
@@ -156,7 +176,22 @@ void Engine::Render(float elapsedTime)
 | 
			
		||||
	all.ApplyRotation(gameTime * 100.f, 0.f, 0.f, 1.f);
 | 
			
		||||
	all.ApplyRotation(gameTime * 100.f, 1.f, 0.f, 0.f);
 | 
			
		||||
	all.Use();
 | 
			
		||||
	m_textureCube.Bind();
 | 
			
		||||
 | 
			
		||||
	switch ((int)(gameTime*5) % 4) {
 | 
			
		||||
	case 0:
 | 
			
		||||
		m_textureCube1.Bind();
 | 
			
		||||
		break;
 | 
			
		||||
	case 1: 
 | 
			
		||||
		m_textureCube2.Bind();
 | 
			
		||||
		break;
 | 
			
		||||
	case 2:
 | 
			
		||||
		m_textureCube3.Bind();
 | 
			
		||||
		break;
 | 
			
		||||
	case 3:
 | 
			
		||||
		m_textureCube4.Bind();
 | 
			
		||||
		break;
 | 
			
		||||
	}
 | 
			
		||||
	glEnable(GL_BLEND);
 | 
			
		||||
	glBegin(GL_QUADS);
 | 
			
		||||
 | 
			
		||||
	glNormal3f(0, 0, 1);
 | 
			
		||||
@@ -218,7 +253,7 @@ void Engine::Render(float elapsedTime)
 | 
			
		||||
	glVertex3f(0.5f, -0.5f, 0.5f);
 | 
			
		||||
	glTexCoord2f(1, 0);
 | 
			
		||||
	glVertex3f(0.5f, -0.5f, -0.5f);
 | 
			
		||||
 | 
			
		||||
	glDisable(GL_BLEND);
 | 
			
		||||
	glEnd();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -256,6 +291,12 @@ void Engine::KeyPressEvent(unsigned char key)
 | 
			
		||||
			m_keyD = true;
 | 
			
		||||
		}
 | 
			
		||||
		break;
 | 
			
		||||
	case 38: // Left Shift
 | 
			
		||||
		if (!m_keylshift) {
 | 
			
		||||
			std::cout << "Dash!" << std::endl;
 | 
			
		||||
			m_keylshift = true;
 | 
			
		||||
		}
 | 
			
		||||
		break;
 | 
			
		||||
	case 57: // Space
 | 
			
		||||
		if (!m_keySpace) {
 | 
			
		||||
			std::cout << "Jump! " << std::endl;
 | 
			
		||||
@@ -297,7 +338,10 @@ void Engine::KeyReleaseEvent(unsigned char key)
 | 
			
		||||
		std::cout << "rD " << std::endl;
 | 
			
		||||
		m_keyD = false;
 | 
			
		||||
		break;
 | 
			
		||||
	case 57:
 | 
			
		||||
	case 38: // Left Shift
 | 
			
		||||
		std::cout << "rLS " << std::endl;
 | 
			
		||||
		m_keylshift = false;
 | 
			
		||||
	case 57: // Espace
 | 
			
		||||
		std::cout << "rSpace " << std::endl;
 | 
			
		||||
		m_keySpace = false;
 | 
			
		||||
		break;
 | 
			
		||||
@@ -306,8 +350,8 @@ void Engine::KeyReleaseEvent(unsigned char key)
 | 
			
		||||
 | 
			
		||||
void Engine::MouseMoveEvent(int x, int y)
 | 
			
		||||
{
 | 
			
		||||
	m_player.TurnLeftRight(y - (Height() / 2));
 | 
			
		||||
	m_player.TurnTopBottom(x - (Width() / 2));
 | 
			
		||||
	m_player.TurnLeftRight(x - (Width() / 2));
 | 
			
		||||
	m_player.TurnTopBottom(y - (Height() / 2));
 | 
			
		||||
 | 
			
		||||
	// Centrer la souris seulement si elle n'est pas d<>j<EFBFBD> centr<74>e
 | 
			
		||||
	// Il est n<>cessaire de faire la v<>rification pour <20>viter de tomber
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user