Caisse.cpp 2.6 KB

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