J'ai généré un objet tampon vbo (vertex buffer) appelé object_A
, supposons que object_A
contient 10 sommets (30 flottants). Maintenant, je veux mettre à jour en utilisant object_A
glMapBuffer
avec 20 sommets (60 flotteurs), puis-je utiliser glMapBuffer
?comment puis-je mettre à jour les données VBO plus grandes que la taille de la mémoire tampon de vbo courant?
0
A
Répondre
2
Vous ne pouvez pas utiliser glMapBuffer()
, c'est juste pour mapper les données du tampon dans l'espace adresse du client.
Si vous voulez redimensionner un tampon, vous devez utiliser glBufferData()
.
glBufferData(GL_ARRAY_BUFFER, 60 * sizeof(GLfloat), NULL, GL_DYNAMIC_DRAW);
Si c'est parce que vous voulez quelque chose de similaire à realloc()
(réaffectant le tampon, en gardant l'ancien contenu). Ensuite, vous pouvez utiliser glCopyBufferSubData()
et copier les données entre les tampons.