#include "Cube.h" // Permet d'éviter la ré-écriture du namespace glm:: using namespace glm; // Constructeur et Destructeur Cube::Cube(float taille, std::string const vertexShader, std::string const fragmentShader) : m_shader(vertexShader, fragmentShader) { // Chargement du shader m_shader.charger(); // Division de la taille taille /= 2; // Vertices temporaires float verticesTmp[] = {-taille, -taille, -taille, taille, -taille, -taille, taille, taille, -taille, // Face 1 -taille, -taille, -taille, -taille, taille, -taille, taille, taille, -taille, // Face 1 taille, -taille, taille, taille, -taille, -taille, taille, taille, -taille, // Face 2 taille, -taille, taille, taille, taille, taille, taille, taille, -taille, // Face 2 -taille, -taille, taille, taille, -taille, taille, taille, -taille, -taille, // Face 3 -taille, -taille, taille, -taille, -taille, -taille, taille, -taille, -taille, // Face 3 -taille, -taille, taille, taille, -taille, taille, taille, taille, taille, // Face 4 -taille, -taille, taille, -taille, taille, taille, taille, taille, taille, // Face 4 -taille, -taille, -taille, -taille, -taille, taille, -taille, taille, taille, // Face 5 -taille, -taille, -taille, -taille, taille, -taille, -taille, taille, taille, // Face 5 -taille, taille, taille, taille, taille, taille, taille, taille, -taille, // Face 6 -taille, taille, taille, -taille, taille, -taille, taille, taille, -taille}; // Face 6 // Couleurs temporaires float couleursTmp[] = {1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, // Face 1 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, // Face 1 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, // Face 2 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, // Face 2 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, // Face 3 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, // Face 3 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, // Face 4 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, // Face 4 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, // Face 5 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, // Face 5 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, // Face 6 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0}; // Face 6 // Copie des valeurs dans les tableaux finaux for(int i(0); i < 108; i++) { m_vertices[i] = verticesTmp[i]; m_couleurs[i] = couleursTmp[i]; } } Cube::~Cube() { } // Méthodes void Cube::afficher(glm::mat4 &projection, glm::mat4 &modelview) { // Activation du shader glUseProgram(m_shader.getProgramID()); // Envoi des vertices glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, m_vertices); glEnableVertexAttribArray(0); // Envoi de la couleur glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, m_couleurs); glEnableVertexAttribArray(1); // Envoi des matrices glUniformMatrix4fv(glGetUniformLocation(m_shader.getProgramID(), "projection"), 1, GL_FALSE, value_ptr(projection)); glUniformMatrix4fv(glGetUniformLocation(m_shader.getProgramID(), "modelview"), 1, GL_FALSE, value_ptr(modelview)); // Rendu glDrawArrays(GL_TRIANGLES, 0, 36); // Désactivation des tableaux glDisableVertexAttribArray(1); glDisableVertexAttribArray(0); // Désactivation du shader glUseProgram(0); }