2017-09-05 3 views
1

J'ai juste essayé de mettre à jour un Vertex Buffer Object (vbo) qui contient des données avec un dessin statique. Pourquoi je peux le mettre à jour avec glBufferSubData? J'ai toujours pensé que le vbo statique ne pouvait pas être changé.OpenGL Mise à jour de VBO statique

Répondre

5

GL_STATIC_DRAW ne signifie pas que les données ne peuvent pas être modifiées. Le paramètre usage de est un indice pour l'implémentation sous-jacente et peut permettre certaines améliorations de performances, mais il ne limite pas l'utilisation réelle. Les états documentation:

l'utilisation est un indice à l'implémentation GL quant à la façon dont un magasin de données d'un objet tampon sera accédé. Cela permet à l'implémentation GL de prendre des décisions plus intelligentes susceptibles d'affecter de manière significative les performances de l'objet tampon. Cependant, il ne limite pas l'utilisation réelle du magasin de données.

4

Ce sont juste usage indices. La spécification indique explicitement:

usage est spécifié comme l'une des neuf valeurs énumérées. [La description de ces neuf valeurs enum suit]

est fourni en tant qu'indice de performance uniquement. La valeur d'utilisation spécifiée ne contraint pas le modèle d'utilisation réel du magasin de données.

(OpenGL 4.6 core profile specification, section 6.2 "Création et modification d'objets tampon de magasins de données", pages 68-69)