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

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;