Ich beginne gerade OpenGL heute von diesem Tutorial zu lernen: http://openglbook.com/the-book/
Ich kam zu Kapitel 2, wo ich ein Dreieck zeichne, und ich verstehe alles alles außer VAOs (ist diese Abkürzung OK?). Das Tutorial hat diesen Code:Was sind Vertex Array Objekte?
glGenVertexArrays(1, &VaoId);
glBindVertexArray(VaoId);
Ich verstehe zwar, dass der Code notwendig ist, ich habe keine Ahnung, was es tut. Obwohl ich VaoId niemals über diesen Punkt hinaus verwende (außer um es zu zerstören), funktioniert der Code ohne ihn nicht. Ich nehme an, dies ist, weil es erforderlich ist, gebunden zu sein, aber ich weiß nicht warum. Muss dieser genaue Code nur Teil jedes OpenGL-Programms sein? Das Lernprogramm erläutert VAOs als:
Ein Vertex-Array-Objekt (oder VAO) ist ein Objekt, das beschreibt, wie die Vertex-Attribute in einem Vertex Buffer-Objekt (oder VBO) gespeichert werden. Dies bedeutet, dass das VAO nicht das eigentliche Objekt ist, das die Eckendaten speichert, sondern der Deskriptor der Eckendaten. Vertex-Attribute können durch die glVertexAttribPointer-Funktion und ihre beiden Schwesterfunktionen glVertexAttribIPointer und glVertexAttribLPointer beschrieben werden, von denen die erste unten erläutert wird.
Ich verstehe nicht, wie der VAO die Vertex-Attribute beschreibt. Ich habe sie in keiner Weise beschrieben. Erhält es die Informationen vom glVertexAttribPointer? Ich denke, das muss es sein. Ist der VAO einfach ein Ziel für die Informationen von glVertexAttribPointer?
Nebenbei bemerkt, ist das Tutorial, dem ich folge, akzeptabel? Gibt es etwas, auf das ich achten sollte oder ein besseres Tutorial?
'"Vertex Array Object" wird Ihnen vom OpenGL ARB Subcommittee für Silly Names präsentiert.' Ja, so ein dummer Name für ein ** Objekt **, das ** Vertex ** ** Array ** Bindings speichert. –
Wenn ich Sie richtig verstehe, ruft 'glGenVertexArrays (1, & VaoId);' und 'glBindVertexArray (VaoId);' einen VAO mit vernünftigen Standardeinstellungen auf, um Sie vor 'glEnableClientState' zu schützen? Oder missverstehe ich dich völlig? In Zukunft werde ich wahrscheinlich sehr viel 'glEnableClientState' verwenden? – Patrick
Sind VAOs überhaupt mit 'glVertexAttribPointer' verbunden? – Patrick