OpenGL - Index puffert Schwierigkeiten

Ich habe ein benutzerdefiniertes Dateiformat, das alle erforderlichen Informationen für ein 3D-Netz enthält (aus 3ds Max exportiert). Ich habe die Daten für Eckpunkte, Eckpunktindizes und Normalen extrahiert.

Ich übergebe die Eckendaten, Eckindizes und Normalendaten an OpenGL und rendere das Netz mit einem Aufruf anglDrawElements(GL_TRIANGLES,...)

Alles sieht gut aus, aber die Normalen. Das Problem ist, dass die Normalen unterschiedliche Indizes haben. Und da OpenGL nur einen Indexpuffer verwenden kann, wird dieser Indexpuffer sowohl für die Eckpunkte als auch für die Normalen verwendet.

Ich wäre Ihnen sehr dankbar, wenn Sie mir vorschlagen könnten, wie Sie dieses Problem lösen können.

Wichtig zu beachten ist, dass die Eck- / Normaldaten nicht "sortiert" sind und ich daher die Funktionalität von nicht nutzen kannglDrawArrays(GL_TRIANGLES,...) - Das Netz wird nicht richtig gerendert.

Gibt es einen Weg / Algorithmus, mit dem ich die Daten sortieren kann, damit das Netz korrekt gezeichnet werden kann?glDrawArrays(GL_TRIANGLES,..) ? Aber selbst wenn es einen Algorithmus gibt, gibt es ein weiteres Problem: Ich muss einige Scheitelpunkte duplizieren (weil mein Scheitelpunktpuffer aus eindeutigen Scheitelpunkten besteht - zum Beispiel, wenn Sie einen Würfel haben, hat mein Puffer nur 8 Scheitelpunkte), und ich bin nicht sicher wie geht das.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage