Ajout de caméra

This commit is contained in:
Marc-Eric Martel
2021-09-27 13:15:57 -04:00
parent 9d8378784d
commit 7b81f6be61
7 changed files with 186 additions and 24 deletions

View File

@@ -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