Ich fange gerade erst an, OpenGL aus diesem Tutorial zu lernen: http://openglbook.com/the-book/
Ich komme zu Kapitel 2, wo ich ein Dreieck zeichne, und ich verstehe alles außer VAOs (ist dieses Akronym in Ordnung?). Das Tutorial hat diesen Code:
glGenVertexArrays(1, &VaoId);
glBindVertexArray(VaoId);
Obwohl ich verstehe, dass der Code notwendig ist, habe ich keine Ahnung, was er tut. Obwohl ich VaoId nach diesem Punkt nie mehr benutze (außer um es zu zerstören), funktioniert der Code ohne ihn nicht. Ich gehe davon aus, dass dies daran liegt, dass es gebunden werden muss, aber ich weiß nicht warum. Muss dieser genaue Code nur Teil jedes OpenGL-Programms sein? Das Tutorial erklärt VAOs wie folgt:
Ein Vertex-Array-Objekt (oder VAO) ist ein Objekt, das beschreibt, wie die Vertex-Attribute in einem Vertex-Pufferobjekt (oder VBO) gespeichert werden. Dies bedeutet, dass der VAO nicht das eigentliche Objekt ist, in dem die Scheitelpunktdaten gespeichert sind, sondern der Deskriptor der Scheitelpunktdaten. Vertex-Attribute können durch die Funktion glVertexAttribPointer und ihre beiden Schwesterfunktionen glVertexAttribIPointer und glVertexAttribLPointer beschrieben werden, von denen die erste im Folgenden untersucht wird.
Ich verstehe nicht, wie die VAO die Scheitelpunktattribute beschreibt. Ich habe sie in keiner Weise beschrieben. Erhält es die Informationen vom glVertexAttribPointer? Ich denke das muss es sein. Ist die VAO lediglich ein Ziel für die Informationen von glVertexAttribPointer?
Ist das Tutorial, dem ich folge, akzeptabel? Gibt es etwas, auf das ich achten sollte, oder ein besseres Tutorial, dem ich folgen kann?