#include "Modele3D.h"

Modele3D::Modele3D()
:m_textID( 0 ), m_vertices(0x0), m_coordTexture(0x0), m_vboID(0), m_vaoID(0)
{
    //ctor
}

Modele3D::~Modele3D()
{
    // Destruction des tableaux de cordonnées
    if ( m_vertices != 0x0 ) delete[] m_vertices;
    if ( m_coordTexture != 0x0 ) delete[] m_coordTexture;

    // Destruction du VBO
    glDeleteBuffers(1, &m_vboID);

    // Destruction du VAO
    glDeleteVertexArrays(1, &m_vaoID);
}


void Modele3D::afficher(glm::mat4 pmv, glm::mat4 m, Shader* const shad)
{
    // Verouillage VAO
    glBindVertexArray(m_vaoID);

        // Envoi des matrices
        glUniformMatrix4fv(glGetUniformLocation(shad->getProgramID(), "pmv"), 1, GL_FALSE, glm::value_ptr(pmv));
        glUniformMatrix4fv(glGetUniformLocation(shad->getProgramID(), "m"), 1, GL_FALSE, glm::value_ptr(m));

        // Verrouillage de la texture
        glBindTexture(GL_TEXTURE_2D, m_textID);

        // Rendu
        glDrawArrays(GL_TRIANGLES, 0, m_nbVec);

        // Déverrouillage de la texture
        glBindTexture(GL_TEXTURE_2D, 0);

    // Déverrouillage du VAO
    glBindVertexArray(0);
}
