2005
Sams Publishing
glGetBufferSubData
3G

# glGetBufferSubData

returns a subset of a buffer object's data store

## C Specification

                    void glGetBufferSubData
                    GLenum target
                    GLintptr offset
                    GLsizeiptr size
                    GLvoid * data

## Parameters

`target`

  Specifies the target buffer object. The symbolic constant must be `GL_ARRAY_BUFFER`, `GL_ELEMENT_ARRAY_BUFFER`, `GL_PIXEL_PACK_BUFFER`, or `GL_PIXEL_UNPACK_BUFFER`.

`offset`

  Specifies the offset into the buffer object's data store from which data will be returned, measured in bytes.

`size`

  Specifies the size in bytes of the data store region being returned.

`data`

  Specifies a pointer to the location where buffer object data is returned.

## Description

`glGetBufferSubData` returns some or all of the data from the buffer object currently bound to `target`. Data starting at byte offset `offset` and extending for `size` bytes is copied from the data store to the memory pointed to by `data`. An error is thrown if the buffer object is currently mapped, or if `offset` and `size` together define a range beyond the bounds of the buffer object's data store.

## Notes

If an error is generated, no change is made to the contents of `data`.

`glGetBufferSubData` is available only if the GL version is 1.5 or greater.

Targets `GL_PIXEL_PACK_BUFFER` and `GL_PIXEL_UNPACK_BUFFER` are available only if the GL version is 2.1 or greater.

## Errors

`GL_INVALID_ENUM` is generated if `target` is not `GL_ARRAY_BUFFER`, `GL_ELEMENT_ARRAY_BUFFER`, `GL_PIXEL_PACK_BUFFER`, or `GL_PIXEL_UNPACK_BUFFER`.

`GL_INVALID_VALUE` is generated if `offset` or `size` is negative, or if together they define a region of memory that extends beyond the buffer object's allocated data store.

`GL_INVALID_OPERATION` is generated if the reserved buffer object name 0 is bound to `target`.

`GL_INVALID_OPERATION` is generated if the buffer object being queried is mapped.

`GL_INVALID_OPERATION` is generated if `glGetBufferSubData` is executed between the execution of glBegin and the corresponding execution of glEnd.

## See Also

glBindBuffer, glBufferData, glBufferSubData, glMapBuffer, glUnmapBuffer

## Copyright

Copyright 2005 Addison-Wesley. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.