It will be great to support glMapBuffer(). And glBufferSubData() too.
Moreover, it’s can to bring ability to not hold all of the buffers in CPU memory, but in GPU only. For example in clean OpenGL C (in case I understand it properly):
// Generate the buffer in GPU memory only
glBufferStorage(GL_ARRAY_BUFFER, size, NULL, GL_MAP_READ_BIT | GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT);
// Map buffer to the CPU address space
void *data = glMapBuffer(GL_ARRAY_BUFFER, GL_READ_WRITE);
// Fill in the buffer data
// Release the mapping of a buffer
// Unbind the buffer
In case of the glMapBufferRange() function, it’s can be possible to change the small parts of the big VBO (or any other buffer).
In my case, I try to implement the big voxel terrain. If I split them in the small parts (chunks), then I can change it quickly, but it’s slow to render big number of shapes separately. This is stuck on CPU.
When I joins all terrain geometry in single (almost, for optimisation) VBO, then it’s can give ability to render all terrain in single shot of glDraw(). But that approach introduse the problem to make changes in this terrain.
Ability to map and change only the part of big buffer can solve this problem without significant performance penalty.
P.S. Sorry if my English is too bad.