123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- #include "ColorCube.h"
- static unsigned int s_nbColorCubes=0;
- // Constructeur et Destructeur
- ColorCube::ColorCube()
- {
- // Incrémentation du nombre de cubes
- s_nbColorCubes++;
- // Vertices
- float verticesTmp[42] = {0.0f,0.0f,1.0f, 1.0f,1.0f,1.0f, 1.0f,0.0f,1.0f, 1.0f,0.0f,0.0f, 0.0f,0.0f,1.0f, 0.0f,0.0f,0.0f, 0.0f,1.0f,0.0f,
- 1.0f,0.0f,0.0f, 1.0f,1.0f,0.0f, 1.0f,1.0f,1.0f, 0.0f,1.0f,0.0f, 0.0f,1.0f,1.0f, 0.0f,0.0f,1.0f, 1.0f,1.0f,1.0f};
- for(int i(0); i < 42; i++)
- m_vertices[i] = verticesTmp[i];
- // Couleurs
- float couleursTmp[42] = {1.0,1.0,0.0, 1.0,0.0,0.0, 1.0,0.0,0.0, 0.0,0.0,1.0, 1.0,1.0,0.0, 0.0,1.0,0.0, 0.0,1.0,0.0,
- 0.0,0.0,1.0, 0.0,0.0,1.0, 1.0,0.0,0.0, 0.0,1.0,0.0, 1.0,1.0,0.0, 1.0,1.0,0.0, 1.0,0.0,0.0};
- for (int i(0); i<42; i++)
- m_couleurs[i] = couleursTmp[i];
- }
- ColorCube::ColorCube(float taille, float red, float green, float blue)
- {
- // Incrémentation du nombre de cubes
- s_nbColorCubes++;
- // Vertices
- float verticesTmp[42] = {0.f,0.0f,taille, taille,taille,taille, taille,0.0f,taille, taille,0.0f,0.0f, 0.0f,0.0f,taille, 0.0f,0.0f,0.0f, 0.0f,taille,0.0f,
- taille,0.0f,0.0f, taille,taille,0.0f, taille,taille,taille, 0.0f,taille,0.0f, 0.0f,taille,taille, 0.0f,0.0f,taille, taille,taille,taille};
- for(int i(0); i < 42; i++)
- m_vertices[i] = verticesTmp[i];
- // Couleurs
- setColor(red,green,blue);
- }
- ColorCube::~ColorCube()
- {
- s_nbColorCubes--;
- }
- // Méthodes
- void ColorCube::setColor(float red, float green, float blue)
- {
- // Attribution des couleurs
- for(int i(0); i < 42; i++)
- {
- switch (i%3)
- {
- case 0:
- m_couleurs[i] = red;
- break;
- case 1:
- m_couleurs[i] = green;
- break;
- case 2:
- m_couleurs[i] = blue;
- break;
- }
- }
- }
- void ColorCube::afficher()
- {
- // 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);
- // Rendu
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 14);
- // Désactivation des tableaux
- glDisableVertexAttribArray(1);
- glDisableVertexAttribArray(0);
- }
- void ColorCube::move(glm::vec3 deplacement)
- {
- for(int i(0); i < 42; i++)
- {
- switch (i%3)
- {
- case 0:
- m_vertices[i] += deplacement.x;
- break;
- case 1:
- m_vertices[i] += deplacement.y;
- break;
- case 2:
- m_vertices[i] += deplacement.z;
- break;
- }
- }
- }
- unsigned int getNbColorCubes()
- {
- return s_nbColorCubes;
- }
|