Je me demandais quel état est stocké dans un VAO OpenGL. J'ai compris qu'un VAO contient un état lié aux spécifications des sommets des sommets tamponnés (quels attributs sont dans les tampons et quels tampons sont liés, ...). Pour mieux comprendre l'utilisation correcte des VAO, j'aimerais savoir exactement dans quel état ils se trouvent.
Comment je suppose que les VAO doivent être utilisés
À partir d'exemples simples, j'ai compris que l'utilisation correcte des VAO est la suivante:
Installer
Generate VAO
BindVAO
---- Specify vertex attributes
---- Generate VBO's
---- BindVBO's
-------- Buffer vertex data in VBO's
---- Unbind VBO's
Unbind VAO
Le rendu
Bind VAO
---- Draw
Unbind VAO
De cela, je suppose qu'au moins les liaisons de tampon de sommet et les spécifications d'attribut de sommet sont stockées dans le VAO. Je ne sais pas cependant comment ce modèle d'utilisation s'étend aux situations où (plusieurs) textures et (multiples) programmes de shader entrent en jeu. Le programme de shader actif est-il stocké dans le VAO? Et les liaisons de texture (avec leurs paramètres d'échantillonnage / d'emballage ) sont-elles également stockées dans le VAO? Idem pour les uniformes ?
Par conséquent, mes questions sont les suivantes:
- Quel état exact est stocké dans un VAO OpenGL ? (Liaisons VBO, spécifications d'attributs, programme de shader actif, liaisons de texture, paramètres d'échantillonnage / habillage de texture, uniformes ...?)
- Comment utiliser correctement les VAO dans une configuration de rendu plus complexe où (plusieurs) textures avec des paramètres d'échantillonnage / habillage associés, (plusieurs) programmes de shader et uniformes sont impliqués?