[OpenGL] Vertex Buffer Object & Vertex Array Object – Was ist das?

Was sind eig. OpenGL Vertex Buffer Objects & Vertex Array Objects – kurz: VBOs und VAOs?

Gerade absolute OpenGL Neulinge haben es recht schwer, sich in die Materie von OpenGL einzuarbeiten, da immer wieder neue Begriffe auftauchen, die Anfänger verwirren lässt. Aus diesem Grund habe ich heute einmal einen kleinen Artikel verfasst, wo diese beiden Begriffe kurz erklärt werden.

 

Vorerst ein paar kurze Informationen vorab:

Die Grafikkarte kennt nur 3D Objekte, welche dann für unseren Bildschirm in 2D umgerechnet werden. Außerdem kennt die Grafikkarte nur 3 Ecke & 4 Ecke – wenn ihr also einen Baum darstellen wollt, oder sogar eine Kugel, bestehen diese Objekte aus lauter kleinen Triangles (Dreiecken) & Quads (Vierecken).

 

Hier mal eine untexturierte Kugel (erstellt mit Blender):

3D Kugel

An sich ist diese Kugel nichts besonderes, aber wenn ihr einmal genauer hinschaut, werdet ihr bemerken, dass diese aus sehr vielen kleinen 3 & 4 Ecken zusammen gesetzt ist:

3D Kugel Detailansicht

 

Irgendwoher muss die Grafikkarte eben jetzt diese Triangles & Quads, kurz Polygone, kennen und hierbei kommen die VBOs und VAOs ins Spiel. Jeder Eckpunkt besitzt eine bestimmte Koordinate (einen Vektor), welche die Grafikkarte kennen muss, bei einem Viereck muss die Grafikkarte also 4 Vektoren kennen. Außerdem muss die Grafikkarte wissen, welche Vektoren zu einem Polygon zusammengehören.

Polygon mit Koordinaten

Und hierbei kommen die VBOs ins Spiel. Die sog. Vertex Buffer Objects (VBO) sind einfach nur einzelne Vektoren, wie bei diesem Bild z.B. die Koordinate (0, 0, 0) oder (5, 5, 0).

Damit die Grafikkarte jetzt auch noch weiß, dass diese 4 Vektoren zusammen gehören, werden diese in einem Array gespeichert – dem sog. Vertex Array Object (VAO).

Somit ist des Rätsels Geheimnis bereits gelüftet, Vertex Buffer Objects sind die Vektoren für jede Ecke und diese werden zu ganzen Polygonen mit Hilfe der Vertex Array Objects zu einem Array zusammengefasst, damit diese gemeinsam gerendert werden können.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.