From bce97c3480474457b9583061a97b2868a473a901 Mon Sep 17 00:00:00 2001 From: Marc-Eric Martel <1205697@etu.cegepsth.qc.ca> Date: Fri, 1 Oct 2021 08:00:37 -0400 Subject: [PATCH] =?UTF-8?q?=C3=89ventuellement!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQCSim2021/engine.cpp | 112 +++++++++++++--------- SQCSim2021/media/textures/blue - Copy.png | Bin 0 -> 2274 bytes SQCSim2021/media/textures/blue.png | Bin 0 -> 13999 bytes 3 files changed, 65 insertions(+), 47 deletions(-) create mode 100644 SQCSim2021/media/textures/blue - Copy.png create mode 100644 SQCSim2021/media/textures/blue.png diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 9218ab4..d1a991f 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -68,49 +68,67 @@ void Engine::Render(float elapsedTime) m_player.Move(m_keyW, m_keyS, m_keyA, m_keyD, elapsedTime); m_player.ApplyTransformation(all); - m_player.ApplyTransformation(skybox, false); // Version d'ApplyTransformation qui ne tient compte que de la rotation (donc l'objet bouge relativement au joueur). + 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!). - // Skybox - Pas de normals pour avoir un éclairage flat. + // Skybox - Pas de normals pour avoir un éclairage flat? skybox.Use(); m_textureSkybox.Bind(); - glDisable(GL_DEPTH_TEST); + glDisable(GL_DEPTH_TEST); // Pour que tout ce qui est dessiné après soit dessiné par-dessus la skybox. glBegin(GL_QUADS); glTexCoord2f(0, 1); - glVertex3f(10.f, 10.f, 10.f); + glVertex3f(5.f, 5.f, 5.f); glTexCoord2f(1, 1); - glVertex3f(-10.f, 10.f, 10.f); + glVertex3f(-5.f, 5.f, 5.f); glTexCoord2f(1, 0); - glVertex3f(-10.f, -1.f, 10.f); + glVertex3f(-5.f, -5.f, 5.f); glTexCoord2f(0, 0); - glVertex3f(10.f, -1.f, 10.f); + glVertex3f(5.f, -5.f, 5.f); glTexCoord2f(1, 0); - glVertex3f(10.f, -1.f, -10.f); + glVertex3f(5.f, -5.f, -5.f); glTexCoord2f(0, 0); - glVertex3f(-10.f, -1.f, -10.f); + glVertex3f(-5.f, -5.f, -5.f); glTexCoord2f(0, 1); - glVertex3f(-10.f, 10.f, -10.f); + glVertex3f(-5.f, 5.f, -5.f); glTexCoord2f(1, 1); - glVertex3f(10.f, 10.f, -10.f); + glVertex3f(5.f, 5.f, -5.f); glTexCoord2f(0, 1); - glVertex3f(-10.f, 10.f, 10.f); + glVertex3f(-5.f, 5.f, 5.f); glTexCoord2f(1, 1); - glVertex3f(-10.f, 10.f, -10.f); + glVertex3f(-5.f, 5.f, -5.f); glTexCoord2f(1, 0); - glVertex3f(-10.f, -1.f, -10.f); + glVertex3f(-5.f, -5.f, -5.f); glTexCoord2f(0, 0); - glVertex3f(-10.f, -1.f, 10.f); + glVertex3f(-5.f, -5.f, 5.f); glTexCoord2f(0, 1); - glVertex3f(10.f, 10.f, -10.f); + glVertex3f(5.f, 5.f, -5.f); glTexCoord2f(1, 1); - glVertex3f(10.f, 10.f, 10.f); + glVertex3f(5.f, 5.f, 5.f); glTexCoord2f(1, 0); - glVertex3f(10.f, -1.f, 10.f); + glVertex3f(5.f, -5.f, 5.f); glTexCoord2f(0, 0); - glVertex3f(10.f, -1.f, -10.f); + glVertex3f(5.f, -5.f, -5.f); + + //glTexCoord2f(0, 0); // Pas besoin de cette face pour cette version de la skybox. + //glVertex3f(-5.f, 5.f, -5.f); + //glTexCoord2f(0, 1); + //glVertex3f(-5.f, 5.f, 5.f); + //glTexCoord2f(1, 1); + //glVertex3f(5.f, 5.f, 5.f); + //glTexCoord2f(1, 0); + //glVertex3f(5.f, 5.f, -5.f); + + //glTexCoord2f(0, 0); // Pas besoin de cette face pour cette version de la skybox. + //glVertex3f(-5.f, -5.f, -5.f); + //glTexCoord2f(0, 1); + //glVertex3f(-5.f, -5.f, 5.f); + //glTexCoord2f(1, 1); + //glVertex3f(5.f, -5.f, 5.f); + //glTexCoord2f(1, 0); + //glVertex3f(5.f, -5.f, -5.f); glEnd(); glEnable(GL_DEPTH_TEST); @@ -140,65 +158,65 @@ void Engine::Render(float elapsedTime) all.Use(); m_textureCube.Bind(); glBegin(GL_QUADS); - - glNormal3f(0, 0, -1); - glTexCoord2f(1, 0); - glVertex3f(-0.5f, -0.5f, -0.5f); - glTexCoord2f(0, 0); - glVertex3f(0.5f, -0.5f, -0.5f); - glTexCoord2f(0, 1); - glVertex3f(0.5f, 0.5f, -0.5f); - glTexCoord2f(1, 1); - glVertex3f(-0.5f, 0.5f, -0.5f); glNormal3f(0, 0, 1); - glTexCoord2f(0, 0); - glVertex3f(-0.5f, -0.5f, 0.5f); - glTexCoord2f(1, 0); - glVertex3f(0.5f, -0.5f, 0.5f); - glTexCoord2f(1, 1); - glVertex3f(0.5f, 0.5f, 0.5f); glTexCoord2f(0, 1); + glVertex3f(0.5f, 0.5f, 0.5f); + glTexCoord2f(1, 1); glVertex3f(-0.5f, 0.5f, 0.5f); + glTexCoord2f(1, 0); + glVertex3f(-0.5f, -0.5f, 0.5f); + glTexCoord2f(0, 0); + glVertex3f(0.5f, -0.5f, 0.5f); - glNormal3f(-1, 0, 0); + glNormal3f(0, 0, -1); + glTexCoord2f(1, 0); + glVertex3f(0.5f, -0.5f, -0.5f); glTexCoord2f(0, 0); glVertex3f(-0.5f, -0.5f, -0.5f); glTexCoord2f(0, 1); glVertex3f(-0.5f, 0.5f, -0.5f); glTexCoord2f(1, 1); + glVertex3f(0.5f, 0.5f, -0.5f); + + glNormal3f(-1, 0, 0); + glTexCoord2f(0, 1); glVertex3f(-0.5f, 0.5f, 0.5f); + glTexCoord2f(1, 1); + glVertex3f(-0.5f, 0.5f, -0.5f); glTexCoord2f(1, 0); + glVertex3f(-0.5f, -0.5f, -0.5f); + glTexCoord2f(0, 0); glVertex3f(-0.5f, -0.5f, 0.5f); glNormal3f(1, 0, 0); - glTexCoord2f(1, 0); - glVertex3f(0.5f, -0.5f, -0.5f); - glTexCoord2f(1, 1); - glVertex3f(0.5f, 0.5f, -0.5f); glTexCoord2f(0, 1); + glVertex3f(0.5f, 0.5f, -0.5f); + glTexCoord2f(1, 1); glVertex3f(0.5f, 0.5f, 0.5f); - glTexCoord2f(0, 0); + glTexCoord2f(1, 0); glVertex3f(0.5f, -0.5f, 0.5f); + glTexCoord2f(0, 0); + glVertex3f(0.5f, -0.5f, -0.5f); glNormal3f(0, 1, 0); - glTexCoord2f(0, 0); + glTexCoord2f(0, 0); glVertex3f(-0.5f, 0.5f, -0.5f); - glTexCoord2f(1, 0); + glTexCoord2f(0, 1); glVertex3f(-0.5f, 0.5f, 0.5f); glTexCoord2f(1, 1); glVertex3f(0.5f, 0.5f, 0.5f); - glTexCoord2f(0, 1); + glTexCoord2f(1, 0); glVertex3f(0.5f, 0.5f, -0.5f); glNormal3f(0, -1, 0); - glTexCoord2f(0, 0); + glTexCoord2f(0, 0); glVertex3f(-0.5f, -0.5f, -0.5f); - glTexCoord2f(1, 0); + glTexCoord2f(0, 1); glVertex3f(-0.5f, -0.5f, 0.5f); glTexCoord2f(1, 1); glVertex3f(0.5f, -0.5f, 0.5f); - glTexCoord2f(0, 1); + glTexCoord2f(1, 0); glVertex3f(0.5f, -0.5f, -0.5f); glEnd(); diff --git a/SQCSim2021/media/textures/blue - Copy.png b/SQCSim2021/media/textures/blue - Copy.png new file mode 100644 index 0000000000000000000000000000000000000000..32894b3c87e53c77eca73c1b5f52247bd98135b2 GIT binary patch literal 2274 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4Yzkn2Dage(c!@6@aFM%AEbVpxD z28NCO+Pnv;&qukTQF{C2y?TtoWWpjK>4p4b=%i4@V;7k0!w|4g#0+N|Wi-XZ(akP3E httL^M3+d0e%^&gq5KCF52yB-yc)I$ztaD0e0suzE^~(SN literal 0 HcmV?d00001 diff --git a/SQCSim2021/media/textures/blue.png b/SQCSim2021/media/textures/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..d5296a18f7d77a45a2a0ca3b558c8538e45393ad GIT binary patch literal 13999 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 literal 0 HcmV?d00001