2010-2014
Khronos Group
glBindBufferRange
3G

# glBindBufferRange

bind a range within a buffer object to an indexed buffer target

## C Specification

                    void glBindBufferRange
                    GLenumtarget
                    GLuintindex
                    GLuintbuffer
                    GLintptroffset
                    GLsizeiptrsize

## Parameters

`target`

  Specify the target of the bind operation. `target` must be one of `GL_ATOMIC_COUNTER_BUFFER`, `GL_SHADER_STORAGE_BUFFER`, `GL_TRANSFORM_FEEDBACK_BUFFER` or `GL_UNIFORM_BUFFER`.

`index`

  Specify the index of the binding point within the array specified by `target`.

`buffer`

  The name of a buffer object to bind to the specified binding point.

`offset`

  The starting offset in basic machine units into the buffer object `buffer`.

`size`

  The amount of data in machine units that can be read from the buffet object while used as an indexed target.

## Description

`glBindBufferRange` binds a range of the buffer object `buffer` represented by `offset` and `size` to the binding point at index `index` of the array of targets specified by `target`. Each `target` represents an indexed array of buffer binding points, as well as a single general binding point that can be used by other buffer manipulation functions such as glBindBuffer or glMapBufferRange. In addition to binding a range of `buffer` to the indexed buffer binding target, `glBindBufferBase` also binds the range to the generic buffer binding point specified by `target`.

`offset` specifies the offset in basic machine units into the buffer object `buffer` and `size` specifies the amount of data that can be read from the buffer object while used as an indexed target.

## Notes

The `GL_ATOMIC_COUNTER_BUFFER` and `GL_SHADER_STORAGE_BUFFER` targets are available only if the GL ES version is 3.1 or greater.

## Errors

`GL_INVALID_ENUM` is generated if `target` is not `GL_ATOMIC_COUNTER_BUFFER`, `GL_SHADER_STORAGE_BUFFER`, `GL_TRANSFORM_FEEDBACK_BUFFER` or `GL_UNIFORM_BUFFER`.

`GL_INVALID_VALUE` is generated if `index` is greater than or equal to the number of `target`-specific indexed binding points.

`GL_INVALID_VALUE` is generated if `buffer` is not zero and `size` is less than or equal to zero.

`GL_INVALID_VALUE` is generated if `target` is `GL_ATOMIC_COUNTER_BUFFER` or `GL_TRANSFORM_FEEDBACK_BUFFER` and `size` or `offset` are not multiples of 4.

`GL_INVALID_VALUE` is generated if `target` is `GL_SHADER_STORAGE_BUFFER` and `offset` is not a multiple of `GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT`.

`GL_INVALID_VALUE` is generated if `target` is `GL_UNIFORM_BUFFER` and `offset` is not a multiple of `GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT`.

## Associated Gets

glGet with argument `GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS`, `GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS`, `GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS`, `GL_MAX_UNIFORM_BUFFER_BINDINGS`, `GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT`, or `GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT`.

## API Version Support

glBindBufferRange

## See Also

glGenBuffers, glDeleteBuffers, glBindBuffer, glBindBufferBase, glMapBufferRange, glUnmapBuffer,

## Copyright

Copyright 2010-2014 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/.