Bisher habe ich nur glDrawArrays verwendet und würde gerne zu einem Indexpuffer und indizierten Dreiecken übergehen. Ich zeichne ein etwas kompliziertes Objekt mit Textur-Koordinaten, Normalen und Vertex-Koordinaten. Alle diese Daten werden in einem einzigen verschachtelten Vertex-Puffer gesammelt und mit Aufrufen ähnlich wie (vorausgesetzt, alle Serup ist richtig gemacht) gezeichnet:
glVertexPointer( 3, GL_FLOAT, 22, (char*)m_vertexData );
glNormalPointer( GL_SHORT, 22, (char*)m_vertexData+(12) );
glTexCoordPointer( 2, GL_SHORT, 22, (char*)m_vertexData+(18) );
glDrawElements(GL_TRIANGLES, m_numTriangles, GL_UNSIGNED_SHORT, m_indexData );
Erlaubt dies für m_indexData auch mit den Indizes meiner Normalen und Textur-Koordinaten sowie die standard-Position-Index-Array verschachtelt werden? Oder wird eine einzige lineare Liste von Indizes angenommen, die für das gesamte Vertex-Format (POS, NOR, TEX) gilt? Wenn Letzteres zutrifft, wie ist es dann möglich, denselben Scheitelpunkt mit unterschiedlichen Texturkoordinaten oder Normalen zu rendern?
Ich schätze, diese Frage könnte auch umformuliert werden in: wenn ich 3 getrennte indizierte Listen (POS, NOR, TEX) hatte, wo die letzteren 2 nicht neu angeordnet werden können, um die gleiche Indexliste wie die erste zu teilen, was ist der beste Weg, um das zu rendern.