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
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.
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)
- 1. OpenGL: zweite VBO verwöhnt zuerst VBO
- 2. Problem mit OpenGL VBO
- 3. OpenGL VBO in Haskell
- 4. OpenGL VBO-Setup
- 5. OpenGL machen Textur transparent VBO
- 6. OpenGl zeigt keine Dreiecke mit VBO
- 7. OpenGL ES VBO seltsame Speicher Auswirkungen
- 8. OpenGL: mehrere VAOs für einen VBO
- 9. Aktualisierung von VBO-Daten mit glBufferSubData()
- 10. Aktualisierung auf OpenGL 3.2 von OpenGL 2.1
- 11. Rendering in opengl 3.1 + ohne VBO mit clientseitige Vertex Array
- 12. OpenGL ES: ein VBO - mehrere Sprites - übersetzen jede einzeln
- 13. Android OpenGL ES 2. 0 VBO nicht Rendern
- 14. OpenGL C++: Struct Wrapper für VBO wird nicht initialisieren Mitglieder
- 15. Zeichnen von Tausenden von Polygonen mit OpenGL VBO
- 16. Android OpenGL ES2 Viele Texturen für einen VBO
- 17. OpenGL - Versuch, VBO zu verwenden verursacht einen Fehler
- 18. OpenGL - Tell Vertex Shader, dass VBO hat sich geändert
- 19. VAO, VBO und Programm verstehen
- 20. OpenGL ES SensorManager Aktualisierung der Partikelposition
- 21. Unterschied zwischen der Aktualisierung statischer Seitentext mit Jquery gegen AJAX
- 22. C++ VBO Rendering-Ausgabe
- 23. Wie VBO Arbeits
- 24. OpenTK - Transparenzproblem auf VBO
- 25. Verwenden VBO in Drupal benutzerdefiniertes Feld aktualisieren
- 26. VBO Unterschiede zwischen OS X und Win7?
- 27. Wie entscheidet SLI, welcher VBO zu welcher GPU in OpenGL gehört?
- 28. SDL2 OpenGL ++ C ein Sprite gezeichnet mit VBO und FBO beweglichen
- 29. Zwei verschiedene Objekte OpenGL. VAO VBO IBO Problem mit Mesh-Verzerrung
- 30. C++ OpenGL Issue Zeichnung Mesh mit Vbo und Vao in einem Objekt gespeichert