GL_OES_mapbuffer#
Supported Hardware#
Series5, Series5XT, Series6, Series6XE, Series6XT
Valid APIs#
OpenGL ES 1.x, 2.0
Description#
This extension enables the user to upload data directly into memory that the driver provides for them, by mapping the storage of a buffer object into client address space. In many cases this means that the user can avoid an additional memory allocation on top of one performed by the driver.
Note#
This functionality is core to OpenGL ES 3.0 in the form of glMapBufferRange
Registry Link#
http://www.khronos.org/registry/gles/extensions/OES/OES_mapbuffer.txt
Example#
// Bind a buffer
glBindBuffer(GL_ARRAY_BUFFER, aVertexBuffer);
// Map the buffer's data to a CPU addressable pointer, in a way that allows us to write to it,
// but not read the data back.
void* bufferData = glMapBufferOES(GL_ARRAY_BUFFER, GL_WRITE_ONLY_OES);
// Get the size of the buffer
GLint bufferSize = 0;
glGetBufferParameteriv(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, &bufferSize);
// Write some data into the pointer
memcpy(bufferData, newDataForTheBuffer, bufferSize);
// Unmap the pointer
glUnmapBufferOES(GL_ARRAY_BUFFER);
// The pointer is now invalid, so NULL it
bufferData = NULL;