Light | Dark

# docs.GL

OpenGL 4

# glBindBuffersRange

## Name

glBindBuffersRange — bind ranges of one or more buffer objects to a sequence of indexed buffer targets

## C Specification

`void glBindBuffersRange(` | GLenum target,
| GLuint first,
| GLsizei count,
| const GLuint *buffers,
| const GLintptr *offsets,
| const GLintptr *sizes`)`;

## Parameters

`target`

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

`index`

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

`count`

  Specify the number of contiguous binding points to which to bind buffers.

`buffers`

  A pointer to an array of names of buffer objects to bind to the targets on the specified binding point, or `NULL`.

## Description

`glBindBuffersRange` binds a set of `count` ranges from buffer objects whose names are given in the array `buffers` to the `count` consecutive binding points starting from index `index` of the array of targets specified by `target`. `offsets` specifies the address of an array containing `count` starting offsets within the buffers, and `sizes` specifies the adderess of an array of `count` sizes of the ranges. If `buffers` is `NULL` then `offsets` and `sizes` are ignored and `glBindBuffersRange` unbinds any buffers that are currently bound to the referenced binding points. Assuming no errors are generated, it is equivalent to the following pseudo-code, which calls glBindBufferRange:

        for (i = 0; i < count; i++) {
            if (buffers != NULL) {
                glBindBufferRange(target, first + i, buffers[i], offsets[i], sizes[i]);
            } else {
                glBindBufferBase(target, first + i, 0);
            }
        }

## Notes

`glBindBuffersBase` is available only if the GL version is 4.4 or higher.

## Errors

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

`GL_INVALID_OPERATION` is generated if `first` + `count` is greater than the number of target-specific indexed binding points.

`GL_INVALID_OPERATION` is generated if any value in `buffers` is not zero or the name of an existing buffer object.

`GL_INVALID_VALUE` is generated by if any value in `offsets` is less than zero or if any value in `sizes` is less than zero.

`GL_INVALID_VALUE` is generated if any pair of values in `offsets` and `sizes` does not respectively satisfy the constraints described for those parameters for the specified target.

## Version Support

| OpenGL Version
--- | ---
Function / Feature Name | 2.0 | 2.1 | 3.0 | 3.1 | 3.2 | 3.3 | 4.0 | 4.1 | 4.2 | 4.3 | 4.4 | 4.5
`glBindBuffersRange` | - | - | - | - | - | - | - | - | - | - | ✔ | ✔

## See Also

glGenBuffers, glDeleteBuffers, glBindBuffer, glBindBufferBase, glBindBufferRange, glBindBuffersRange, glMapBuffer, glUnmapBuffer

## Copyright

Copyright © 2013-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. https://opencontent.org/openpub/.

Think you can improve this page? Edit this page on GitHub.