Ajout de caméra
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include <cmath>
|
||||
#include <iostream>
|
||||
#include "transformation.h"
|
||||
#include "player.h"
|
||||
|
||||
Engine::Engine() { }
|
||||
|
||||
@@ -56,7 +57,7 @@ void Engine::Render(float elapsedTime)
|
||||
|
||||
gameTime += elapsedTime;
|
||||
|
||||
Transformation cube;
|
||||
Transformation all;
|
||||
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
@@ -65,49 +66,53 @@ void Engine::Render(float elapsedTime)
|
||||
glLoadIdentity();
|
||||
|
||||
|
||||
m_player.Move(m_keyW, m_keyS, m_keyA, m_keyD, elapsedTime);
|
||||
m_player.ApplyTransformation(all);
|
||||
|
||||
// Skybox
|
||||
m_textureSkybox.Bind();
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
glBegin(GL_QUADS);
|
||||
|
||||
glTexCoord2f(1, 0);
|
||||
glVertex3f(10.f, 10.f, 10.f);
|
||||
glVertex3f(100.f, 100.f, 100.f);
|
||||
glTexCoord2f(0, 0);
|
||||
glVertex3f(-10.f, 10.f, 10.f);
|
||||
glVertex3f(-100.f, 100.f, 100.f);
|
||||
glTexCoord2f(0, 1);
|
||||
glVertex3f(-10.f, -10.f, 10.f);
|
||||
glVertex3f(-100.f, -3.f, 100.f);
|
||||
glTexCoord2f(1, 1);
|
||||
glVertex3f(10.f, -10.f, 10.f);
|
||||
glVertex3f(100.f, -3.f, 100.f);
|
||||
|
||||
glTexCoord2f(1, 0);
|
||||
glVertex3f(10.f, -10.f, -10.f);
|
||||
glVertex3f(100.f, -3.f, -100.f);
|
||||
glTexCoord2f(0, 0);
|
||||
glVertex3f(-10.f, -10.f, -10.f);
|
||||
glVertex3f(-100.f, -3.f, -100.f);
|
||||
glTexCoord2f(0, 1);
|
||||
glVertex3f(-10.f, 10.f, -10.f);
|
||||
glVertex3f(-100.f, 100.f, -100.f);
|
||||
glTexCoord2f(1, 1);
|
||||
glVertex3f(10.f, 10.f, -10.f);
|
||||
glVertex3f(100.f, 100.f, -100.f);
|
||||
|
||||
glTexCoord2f(1, 0);
|
||||
glVertex3f(-10.f, 10.f, 10.f);
|
||||
glVertex3f(-100.f, 100.f, 100.f);
|
||||
glTexCoord2f(0, 0);
|
||||
glVertex3f(-10.f, 10.f, -10.f);
|
||||
glVertex3f(-100.f, 100.f, -100.f);
|
||||
glTexCoord2f(0, 1);
|
||||
glVertex3f(-10.f, -10.f, -10.f);
|
||||
glVertex3f(-100.f, -3.f, -100.f);
|
||||
glTexCoord2f(1, 1);
|
||||
glVertex3f(-10.f, -10.f, 10.f);
|
||||
glVertex3f(-100.f, -3.f, 100.f);
|
||||
|
||||
glTexCoord2f(1, 0);
|
||||
glVertex3f(10.f, 10.f, -10.f);
|
||||
glVertex3f(100.f, 100.f, -100.f);
|
||||
glTexCoord2f(0, 0);
|
||||
glVertex3f(10.f, 10.f, 10.f);
|
||||
glVertex3f(100.f, 100.f, 100.f);
|
||||
glTexCoord2f(0, 1);
|
||||
glVertex3f(10.f, -10.f, 10.f);
|
||||
glVertex3f(100.f, -3.f, 100.f);
|
||||
glTexCoord2f(1, 1);
|
||||
glVertex3f(10.f, -10.f, -10.f);
|
||||
glVertex3f(100.f, -3.f, -100.f);
|
||||
glEnd();
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
||||
all.Use();
|
||||
// Plancher
|
||||
// Les vertex doivent etre affiches dans le sens anti-horaire (CCW)
|
||||
m_textureFloor.Bind();
|
||||
@@ -124,12 +129,13 @@ void Engine::Render(float elapsedTime)
|
||||
glVertex3f(-100.f, -2.f, -100.f);
|
||||
glEnd();
|
||||
|
||||
|
||||
// Cube
|
||||
cube.ApplyTranslation(0.f, 0.f, -10.f);
|
||||
cube.ApplyRotation(gameTime * 100.f, 0.f, 1.f, 0.f);
|
||||
cube.ApplyRotation(gameTime * 100.f, 0.f, 0.f, 1.f);
|
||||
cube.ApplyRotation(gameTime * 100.f, 1.f, 0.f, 0.f);
|
||||
cube.Use();
|
||||
all.ApplyTranslation(0.f, 0.f, -10.f);
|
||||
all.ApplyRotation(gameTime * 100.f, 0.f, 1.f, 0.f);
|
||||
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();
|
||||
glBegin(GL_QUADS);
|
||||
|
||||
@@ -153,7 +159,7 @@ void Engine::Render(float elapsedTime)
|
||||
glTexCoord2f(0, 1);
|
||||
glVertex3f(-0.5f, 0.5f, 0.5f);
|
||||
|
||||
glNormal3f(0, -1, 0);
|
||||
glNormal3f(0, 1, 0);
|
||||
glTexCoord2f(0, 0);
|
||||
glVertex3f(-0.5f, -0.5f, -0.5f);
|
||||
glTexCoord2f(1, 0);
|
||||
@@ -163,7 +169,7 @@ void Engine::Render(float elapsedTime)
|
||||
glTexCoord2f(0, 1);
|
||||
glVertex3f(-0.5f, -0.5f, 0.5f);
|
||||
|
||||
glNormal3f(0, 1, 0);
|
||||
glNormal3f(0, -1, 0);
|
||||
glTexCoord2f(0, 0);
|
||||
glVertex3f(0.5f, -0.5f, -0.5f);
|
||||
glTexCoord2f(1, 0);
|
||||
@@ -270,6 +276,9 @@ 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));
|
||||
|
||||
// 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
|
||||
// dans une boucle infinie o<> l'appel <20> CenterMouse g<>n<EFBFBD>re un
|
||||
|
Reference in New Issue
Block a user