Hier ist ein anständiger Bericht über VBOs.
Performance
Hier ist eine gute Übersicht über die Aufrufsemantik.
Hier finden Sie einen weiteren guten Überblick über Leistungsprobleme. Darin sehen wir, dass VBOs performanter sind als Arrays.
Der Grund, warum wir VBOs bevorzugen, ist, dass die Daten auf die Karte geladen werden und Sie sie nicht bei jedem Frame übertragen müssen. Abhängig vom Typ des erstellten VBO können Sie dem Grafiktreiber Hinweise zur Verwendung geben (Write-Many, Read-Many vs. Write-Many, Never-Read usw.).
Verwendung
VBOs eignen sich hervorragend für statische Geometrie wie Gelände, von dem Sie nicht erwarten, dass es sich ändert, oder für instanziierte Geometrie.
Vertex-Arrays eignen sich für Daten, die sich häufig ändern, aber auch vom Host-Computer gelesen werden. Daher werden sie häufig zum direkten Rendern von Daten verwendet, die gerade bearbeitet werden (z. B. Laser-Entfernungsmesser-Datenpuffer). Wenn Sie nicht die Daten auf dem Host-Gerät lesen müssen (also nur auf die Karte schieben), sind VBOs im Nur-Schreib-Modus eine gute Option.
Portabilität
Clientseitige Vertex-Arrays
Diese sind in OpenGL vor 3.0 verfügbar, in 3.0 nicht mehr unterstützt und in 3.1+ enthalten. OpenGL ES unterstützt sie (OpenGL ES 2 nicht).
VBOs
Diese sind ab OpenGL 1.5 verfügbar. Dies ist die einzige Möglichkeit, Geometriedaten in OpenGL ES 2 (und damit in WebGL) zu speichern.