Je commence tout juste à apprendre OpenGL aujourd'hui à partir de ce tutoriel: http://openglbook.com/the-book/
Je suis arrivé au chapitre 2, où je dessine un triangle, et je comprends tout sauf les VAO (cet acronyme est-il correct?). Le tutoriel a ce code:
glGenVertexArrays(1, &VaoId);
glBindVertexArray(VaoId);
Bien que je comprenne que le code est nécessaire, je n'ai aucune idée de ce qu'il fait. Bien que je n'utilise jamais VaoId au-delà de ce point (sauf pour le détruire), le code ne fonctionne pas sans lui. Je suppose que c'est parce qu'il est nécessaire d'être lié, mais je ne sais pas pourquoi. Ce code exact doit-il simplement faire partie de chaque programme OpenGL? Le didacticiel explique les VAO comme suit:
Un objet Vertex Array (ou VAO) est un objet qui décrit comment les attributs de vertex sont stockés dans un objet Vertex Buffer (ou VBO). Cela signifie que le VAO n'est pas l'objet réel stockant les données de sommet, mais le descripteur des données de sommet. Les attributs Vertex peuvent être décrits par la fonction glVertexAttribPointer et ses deux fonctions soeurs glVertexAttribIPointer et glVertexAttribLPointer, la première que nous explorerons ci-dessous.
Je ne comprends pas comment le VAO décrit les attributs de vertex. Je ne les ai décrits d’aucune façon. Obtient-il les informations du glVertexAttribPointer? Je suppose que ça doit être ça. Le VAO est-il simplement une destination pour les informations de glVertexAttribPointer?
En passant, le tutoriel que je suis est-il acceptable? Y a-t-il quelque chose à surveiller ou un meilleur tutoriel à suivre?