Caisse.cpp 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #include "Caisse.h"
  2. //Constructeur
  3. Caisse::Caisse(float taille, std::string const vertexShader, std::string const fragmentShader, std::string fichierImage)
  4. : Cube(taille, vertexShader, fragmentShader)
  5. {
  6. // Chargement de la texture
  7. m_texture.charger(fichierImage);
  8. // Implémentation du tableau de coordonnées texture
  9. float coordTextureTmp[] = {0, 0, 1, 0, 1, 1, // Face 1
  10. 0, 0, 0, 1, 1, 1, // Face 1
  11. 0, 0, 1, 0, 1, 1, // Face 2
  12. 0, 0, 0, 1, 1, 1, // Face 2
  13. 0, 0, 1, 0, 1, 1, // Face 3
  14. 0, 0, 0, 1, 1, 1, // Face 3
  15. 0, 0, 1, 0, 1, 1, // Face 4
  16. 0, 0, 0, 1, 1, 1, // Face 4
  17. 0, 0, 1, 0, 1, 1, // Face 5
  18. 0, 0, 0, 1, 1, 1, // Face 5
  19. 0, 0, 1, 0, 1, 1, // Face 6
  20. 0, 0, 0, 1, 1, 1}; // Face 6
  21. for(int i (0); i < 72; i++)
  22. m_coordTexture[i] = coordTextureTmp[i];
  23. }
  24. //Destructeur
  25. Caisse::~Caisse()
  26. {}
  27. void Caisse::afficher(glm::mat4 &projection, glm::mat4 &modelview)
  28. {
  29. // Activation du shader
  30. glUseProgram(m_shader.getProgramID());
  31. // Envoi des vertices
  32. glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, m_vertices);
  33. glEnableVertexAttribArray(0);
  34. // Envoi des coordonnées de texture
  35. glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 0, m_coordTexture);
  36. glEnableVertexAttribArray(2);
  37. // Envoi des matrices
  38. glUniformMatrix4fv(glGetUniformLocation(m_shader.getProgramID(), "projection"), 1, GL_FALSE, glm::value_ptr(projection));
  39. glUniformMatrix4fv(glGetUniformLocation(m_shader.getProgramID(), "modelview"), 1, GL_FALSE, glm::value_ptr(modelview));
  40. // Verrouillage de la texture
  41. glBindTexture(GL_TEXTURE_2D, m_texture.getID());
  42. // Rendu
  43. glDrawArrays(GL_TRIANGLES, 0, 36);
  44. // Déverrouillage de la texture
  45. glBindTexture(GL_TEXTURE_2D, 0);
  46. // Désactivation des tableaux
  47. glDisableVertexAttribArray(2);
  48. glDisableVertexAttribArray(0);
  49. // Désactivation du shader
  50. glUseProgram(0);
  51. }