1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| void Cube::charger()
{
// Destruction d'un éventuel ancien VBO
if(glIsBuffer(m_vboID) == GL_TRUE)
glDeleteBuffers(1, &m_vboID);
// Génération de l'ID
glGenBuffers(1, &m_vboID);
// Verrouillage du VBO
glBindBuffer(GL_ARRAY_BUFFER, m_vboID);
// Allocation de la mémoire vidéo
glBufferData(GL_ARRAY_BUFFER, m_tailleVerticesBytes + m_tailleCoordTextureBytes, 0, GL_STATIC_DRAW);
// Transfert des données
glBufferSubData(GL_ARRAY_BUFFER, 0, m_tailleVerticesBytes, m_vertices);
glBufferSubData(GL_ARRAY_BUFFER, m_tailleVerticesBytes, m_tailleCoordTextureBytes, m_coordTexture);
// Déverrouillage de l'objet
glBindBuffer(GL_ARRAY_BUFFER, 0);
// Destruction d'un éventuel ancien VAO
if(glIsVertexArray(m_vaoID) == GL_TRUE)
glDeleteVertexArrays(1, &m_vaoID);
// Génération de l'identifiant du VAO
glGenVertexArrays(1, &m_vaoID);
// Verrouillage du VAO
glBindVertexArray(m_vaoID);
// Verrouillage du VBO
glBindBuffer(GL_ARRAY_BUFFER, m_vboID);
// Accès aux vertices dans la mémoire vidéo
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0));
glEnableVertexAttribArray(0);
// Envoi des coordonnées de texture
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(m_tailleVerticesBytes));
glEnableVertexAttribArray(2);
// Déverrouillage du VBO
glBindBuffer(GL_ARRAY_BUFFER, 0);
// Déverrouillage du VAO
glBindVertexArray(0);
} |
Partager