6/17
3.3. Affichage des données
Dans la boucle d’animation, afficher des données revient principalement à indiquer le shader à utiliser, activer le VAO, et demander l’affichage. Il n’y a alors plus d’opérations complexes à réaliser sur le CPU, l’ensemble des traitements étant portés par le GPU.
Le code correspondant à l’affichage du triangle est le suivant
// ************************************************* //
// 3 - Displaying Data //
// ************************************************* //
glUseProgram(shader); // Activate shader program
glBindVertexArray(vao); // Activate attributes for the drawing
glDrawArrays(GL_TRIANGLES, 0, 3); // Draw 3 vertices
glBindVertexArray(0);
glUseProgram(0);
-
La demande effective d’affichage est réalisée par la fonction glDrawArrays(GLenum mode, GLint first, GLsizei count)
-
mode: Indique le type de primitive à afficher: ici des triangles par GL_TRIANGLES.
-
first: Le premier indice de sommet devant être affiché (ici l’indice 0).
-
count: Nombre de sommets devant être affichés (ici 3).
-
Note sur l’efficacité
Dans ce cas particulier, nous utilisons uniquement un seul VBO et VAO. Le fait d’activer, puis désactiver le shader courant et le VAO n’est pas strictement nécessaire. Pour optimiser le temps d’exécution, on pourra trouver des programmes où le temps de calcul est critique (ex. jeux vidéos, etc) une volonté de limiter du nombre de changement de contextes (en particulier le chargement de shader.
Dans votre cas (et dans l’ensemble des TD), ce changement de contexte aura un impact négligeable sur le temps de calcul. Préférez ainsi garder strictement une activation/désactivation des différents éléments afin de simplifier le debug lors de l’utilisation de multiples VBO, VAO et shaders.