Ich habe mich gefragt, welcher Status in einem OpenGL VAO gespeichert ist. Ich habe verstanden, dass ein VAO einen Status enthält, der mit den Scheitelpunktspezifikationen von gepufferten Scheitelpunkten zusammenhängt (welche Attribute befinden sich in den Puffern und welche Puffer sind gebunden, ...). Um die korrekte Verwendung von VAOs besser zu verstehen, möchte ich genau wissen, welchen Status sie haben.
Wie ich davon ausgehe, sollten VAOs verwendet werden
Aus einfachen Beispielen habe ich verstanden, dass die korrekte Verwendung von VAOs wie folgt lautet:
Installieren
Generate VAO
BindVAO
---- Specify vertex attributes
---- Generate VBO's
---- BindVBO's
-------- Buffer vertex data in VBO's
---- Unbind VBO's
Unbind VAO
Rendern
Bind VAO
---- Draw
Unbind VAO
Ich gehe davon aus, dass zumindest die Vertex-Pufferbindungen und die Vertex-Attributspezifikationen in der VAO gespeichert sind. Ich bin mir jedoch nicht sicher, wie sich dieses Verwendungsmuster auf Situationen erstreckt, in denen (mehrere) Texturen und (mehrere) Shader-Programme ins Spiel kommen. Ist das aktive Shader-Programm in der VAO gespeichert? Und werden die Texturbindungen (mit ihren Sampling- / Wrapping-Einstellungen ) auch im VAO gespeichert? Das Gleiche gilt für Uniformen ?
Daher sind meine Fragen:
- Welcher genaue Status ist in einem OpenGL VAO gespeichert ? (VBO-Bindungen, Attributspezifikationen, Active Shader-Programm, Texturbindungen, Einstellungen für Texturabtastung / -umhüllung, Uniformen ...?)
- Wie verwende ich VAOs korrekt in einem komplexeren Rendering-Setup, in dem (mehrere) Texturen mit zugehörigen Sampling- / Wrapping-Einstellungen, (mehreren) Shader-Programmen und Uniformen beteiligt sind?