Ich schreibe eine kleine Grafik-Engine mit OpenGL (über OpenTK mit C#).OpenGL, VAOs und mehrere Puffer
Um Vertex-Attribute zu definieren, habe ich eine VertexDeclaration-Klasse mit einem Array von VertexElement-Strukturen, die glEnableVertexAttribArray/glVertexAttribPointer-Aufrufe zugeordnet sind.
Um mehrere Vertex-Streams zu unterstützen, habe ich eine spezielle Struktur, die einen Vertex-Puffer, eine Vertex-Deklaration, einen Vertex-Offset und eine Instanzfrequenz enthält (wie die VertexBufferBinding-Struktur des XNA).
Wenn ein Zeichnungsaufruf aufgerufen wird, Iteriere ich über alle vertex Knotenströme und binden ihre Vertexpuffer, wenden Vertexdeklarationen an, deaktivieren nicht verwendete Vertexattribute und zeichnen die Grundelemente.
Ich möchte VAOs verwenden, um die glEnableVertexAttribArray-Aufrufe in sie zu cachen, und immer wenn ein Vertex-Stream angewendet wird, binden Sie den VAO und ändern Sie seine Array-Puffer-Bindung.
Ist das eine korrekte Verwendung von VAOs?
Danke für diese großartige Antwort.Wo kommt dann der 'glBufferData'-Schritt zum Tragen? Müssen Sie die Daten nicht zuerst puffern, bevor Sie den 'glVertexAttribPointer' verwenden? Tut mir leid, ich bin sehr neu in OpenGL –