Me preguntaba qué estado se almacena en un OpenGL VAO. He entendido que un VAO contiene estados relacionados con las especificaciones de vértices de vértices almacenados (qué atributos están en los almacenamientos intermedios y qué almacenamientos están vinculados, ...). Para comprender mejor el uso correcto de los VAO, me gustaría saber exactamente qué estado tienen.
Cómo supongo que se deben usar VAO
A partir de ejemplos simples, he entendido que el uso correcto de VAO es el siguiente:
Preparar
Generate VAO
BindVAO
---- Specify vertex attributes
---- Generate VBO's
---- BindVBO's
-------- Buffer vertex data in VBO's
---- Unbind VBO's
Unbind VAO
Representación
Bind VAO
---- Draw
Unbind VAO
A partir de esto, supongo que al menos los enlaces de búfer de vértices y las especificaciones de atributos de vértice se almacenan en el VAO. Sin embargo, no estoy seguro de cómo este patrón de uso se extiende a situaciones donde entran en juego texturas (múltiples) y (múltiples) sombreadores. ¿El programa de sombreado activo está almacenado en el VAO? ¿Y los enlaces de textura (con sus configuraciones de muestreo / ajuste ) también se almacenan en el VAO? Lo mismo para los uniformes ?
Por lo tanto, mis preguntas son:
- ¿Qué estado exacto se almacena en un OpenGL VAO ? (Enlaces de VBO, especificaciones de atributos, programa de sombreado activo, enlaces de textura, ajustes de muestreo / ajuste de textura, uniformes ...?)
- ¿Cómo uso correctamente los VAO en una configuración de renderizado más compleja en la que intervienen texturas (múltiples) con configuraciones de muestreo / ajuste asociadas, (múltiples) programas de sombreado y uniformes?