## Name

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_ATOMIC_COUNTER_BUFFER`, `GL_COPY_READ_BUFFER`, `GL_COPY_WRITE_BUFFER`, `GL_DRAW_INDIRECT_BUFFER`, `GL_DISPATCH_INDIRECT_BUFFER`, `GL_ELEMENT_ARRAY_BUFFER`, `GL_PIXEL_PACK_BUFFER`, `GL_PIXEL_UNPACK_BUFFER`, `GL_QUERY_RESULT_BUFFER`, `GL_TEXTURE_BUFFER`, `GL_TRANSFORM_FEEDBACK_BUFFER`, or `GL_UNIFORM_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`.

The `GL_ATOMIC_COUNTER_BUFER` target is available only if the GL version is 4.2 or greater.

The `GL_DISPATCH_INDIRECT_BUFFER` target is available only if the GL version is 4.3 or greater.

The `GL_QUERY_RESULT_BUFFER` target is available only if the GL version is 4.4 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.

## See Also

glBindBuffer, glBufferData, glBufferSubData, glMapBuffer, glUnmapBuffer

## Copyright

Copyright © 2005 Addison-Wesley. Copyright © 2011-2013 Khronos Group. 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/.