Sto solo iniziando a imparare OpenGL oggi da questo tutorial: http://openglbook.com/the-book/
Sono arrivato al capitolo 2, dove disegno un triangolo, e capisco tutto tranne VAO (è questo acronimo OK?). Il tutorial ha questo codice:
glGenVertexArrays(1, &VaoId);
glBindVertexArray(VaoId);
Pur comprendendo che il codice è necessario, non ho idea di cosa faccia. Anche se non uso mai VaoId oltre questo punto (tranne che per distruggerlo), il codice non funziona senza di esso. Suppongo che ciò sia dovuto al fatto che è necessario essere vincolato, ma non so perché. Questo codice esatto deve solo far parte di ogni programma OpenGL? Il tutorial spiega i VAO come:
Un Vertex Array Object (o VAO) è un oggetto che descrive il modo in cui gli attributi dei vertici vengono memorizzati in un Vertex Buffer Object (o VBO). Ciò significa che il VAO non è l'oggetto effettivo che memorizza i dati del vertice, ma il descrittore dei dati del vertice. Gli attributi dei vertici possono essere descritti dalla funzione glVertexAttribPointer e dalle sue due funzioni sorelle glVertexAttribIPointer e glVertexAttribLPointer, la prima delle quali esploreremo di seguito.
Non capisco come il VAO descrive gli attributi dei vertici. Non li ho descritti in alcun modo. Ottiene le informazioni dal glVertexAttribPointer? Immagino debba essere questo. Il VAO è semplicemente una destinazione per le informazioni di glVertexAttribPointer?
In una nota a margine, il tutorial che sto seguendo è accettabile? C'è qualcosa a cui dovrei prestare attenzione o un tutorial migliore da seguire?