Einordnung der Inhalte (OpenGL) – Teil 3
Der letzte Teil besteht noch aus der Thematik über Element Buffer Objects (EBO). Also zu dem Vertex Buffer Object kommt jetzt noch ein Element Buffer dazu. So wie ich es verstehe ist das EBO eine Art “Malen nach Zahlen”. Um eine gewisse Redundanz von Koordinaten-Punkten zu vermeiden, werden einzelne Punkte nur einfach gespeichert und am Ende wird festgelegt in welcher Reihenfolge gezeichnet wird.

Wie man hier zum Beispiel in Abbildung 1 sieht, sind für die Darstellung von einem Rechteck zwei Dreiecke nötig. Die Punkte links oben und rechts unten sind jedoch nun doppelt gespeichert, was als Overhead bezeichnet wird. Diese Problematik wird weitaus tragischer wenn komplexere Figuren ins Spiel kommen. Daher werden im Endeffekt nur vier Koordinatenpunkte gespeichert.

In Abbildung 2 sieht man die Punkte die jetzt nur noch gespeichert werden. Dennoch muss man OpenGL die Dreiecke mitteilen und die Reihenfolge in welcher sie gezeichnet werden sollen.

Dieses geschieht hier (Abbildung 3) in dem die einzelnen Indizes der Koordinaten angesprochen werden. Dieses Vorgehen wird auch Indexed drawing bezeichnet und wird vom EBO übernommen. Nachdem die Indizes bezeichnet wurden wird der Buffer mit der Funktion glGenBuffers erstellt. Dieses mal wird der Buffer gebunden an den Buffer-Typ GL_ELEMENT_ARRAY_BUFFER. Und nun benutzen wir den glDrawElements anstelle der Funktion glDrawArrays.

Wie man in Abbildung 4 sieht ist links das entsprechende Rechteckt zu sehen und auf der rechten Seite das Rechteck als Wireframe. Der Wireframe verdeutlicht, dass in der Tat zwei Dreiecke von OpenGL gezeichnet wurden. Als nächstes folgen die ersten Übungen.
No Comment