2017-09-05 2 views
1

Ich habe gerade versucht, ein Vertex Buffer Object (vbo) zu aktualisieren, das Daten mit statischem Zeichnen enthält. Warum kann ich es mit glBufferSubData aktualisieren? Ich dachte immer, dass statische vbo's nicht geändert werden können.OpenGL Aktualisierung statischer VBO

Antwort

5

GL_STATIC_DRAW bedeutet nicht, dass die Daten nicht geändert werden können. Der usage-Parameter von glBufferData ist ein Hinweis für die zugrundeliegende Implementierung und ermöglicht möglicherweise einige Leistungsverbesserungen, aber es beschränkt nicht die tatsächliche Verwendung. Die documentation states:

Verwendung ist ein Hinweis auf die GL-Implementierung, wie auf den Datenspeicher eines Pufferobjekts zugegriffen wird. Dies ermöglicht der GL-Implementierung, intelligentere Entscheidungen zu treffen, die sich erheblich auf die Leistung des Pufferobjekts auswirken können. Es beschränkt jedoch nicht die tatsächliche Verwendung des Datenspeichers.

4

Das sind nur Hinweise. Die Spezifikation gibt explizit an:

usage wird als einer der neun aufgezählten Werte angegeben. [Beschreibung dieser neun Enum-Werte folgen]

usage wird nur als Leistungshinweis zur Verfügung gestellt. Der angegebene Verwendungswert beschränkt nicht das tatsächliche Verwendungsmuster des Datenspeichers.

(OpenGL 4.6 core profile specification, Abschnitt 6.2 "Erstellen und Ändern von Puffer-Objekt-Datenspeicher", Seiten 68-69)

Verwandte Themen