123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- #include "Cabane.h"
- // Permet d'éviter la ré-écriture du namespace glm::
- using namespace glm;
- // Constructeur et Destructeur
- Cabane::Cabane(std::string const vertexShader, std::string const fragmentShader) : m_shader(vertexShader, fragmentShader),
- m_textureMur("Textures/Mur.jpg"), m_textureToit("Textures/Toit.jpg")
- {
- // Chargement du shader
- m_shader.charger();
- // Chargement des textures
- m_textureMur.charger();
- m_textureToit.charger();
- // Vertices temporaires
- float verticesTmp[] = {-5, 0, -5, 5, 0, -5, 5, 5, -5, // Mur du Fond
- -5, 0, -5, -5, 5, -5, 5, 5, -5, // Mur du Fond
- -5, 0, -5, -5, 0, 5, -5, 5, 5, // Mur Gauche
- -5, 0, -5, -5, 5, -5, -5, 5, 5, // Mur Gauche
- 5, 0, -5, 5, 0, 5, 5, 5, 5, // Mur Droit
- 5, 0, -5, 5, 5, -5, 5, 5, 5, // Mur Droit
- -5, 5, -5, 5, 5, -5, 0, 6, -5, // Combles
- -6, 4.8, -6, -6, 4.8, 6, 0, 6, 6, // Toit Gauche
- -6, 4.8, -6, 0, 6, -6, 0, 6, 6, // Toit Gauche
- 6, 4.8, -6, 6, 4.8, 6, 0, 6, 6, // Toit Droit
- 6, 4.8, -6, 0, 6, -6, 0, 6, 6}; // Toit Droit
- // Coordonnées de texture temporaires
- float coordTexture[] = {0, 0, 1, 0, 1, 1, // Mur du Fond
- 0, 0, 0, 1, 1, 1, // Mur du Fond
- 0, 0, 1, 0, 1, 1, // Mur Gauche
- 0, 0, 0, 1, 1, 1, // Mur Gauche
- 0, 0, 1, 0, 1, 1, // Mur Droit
- 0, 0, 0, 1, 1, 1, // Mur Droit
- 0, 0, 1, 0, 0.5, 0.5, // Combles
- 0, 0, 1, 0, 1, 1, // Toit Gauche
- 0, 0, 0, 1, 1, 1, // Toit Gauche
- 0, 0, 1, 0, 1, 1, // Toit Droit
- 0, 0, 0, 1, 1, 1}; // Toit Droit
- // Copie des vertices
- for(int i(0); i < 99; i++)
- m_vertices[i] = verticesTmp[i];
- // Copie des coordonnées
- for(int i(0); i < 66; i++)
- m_coordTexture[i] = coordTexture[i];
- }
- Cabane::~Cabane()
- {
- }
- // Méthodes
- void Cabane::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 des coordonnées de texture
- glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 0, m_coordTexture);
- glEnableVertexAttribArray(2);
- // 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));
- // Verrouillage de la texture du Mur
- glBindTexture(GL_TEXTURE_2D, m_textureMur.getID());
- // Rendu
- glDrawArrays(GL_TRIANGLES, 0, 21);
- // Déverrouillage de la texture
- glBindTexture(GL_TEXTURE_2D, 0);
- // Verrouillage de la texture du Toit
- glBindTexture(GL_TEXTURE_2D, m_textureToit.getID());
- // Rendu
- glDrawArrays(GL_TRIANGLES, 21, 12);
- // Déverrouillage de la texture
- glBindTexture(GL_TEXTURE_2D, 0);
- // Désactivation des tableaux
- glDisableVertexAttribArray(2);
- glDisableVertexAttribArray(0);
- // Désactivation du shader
- glUseProgram(0);
- }
|