Light | Dark

# docs.GL

OpenGL 4
OpenGL 3
OpenGL 2
OpenGL ES 3

# glReadBuffer

## Name

glReadBuffer, glNamedFramebufferReadBuffer — select a color buffer source for pixels

## C Specification

`void glReadBuffer(` | GLenum mode`)`;

`void glNamedFramebufferReadBuffer(` | GLuint framebuffer,
| GLenum mode`)`;

## Parameters

`framebuffer`

  Specifies the name of the framebuffer object for `glNamedFramebufferReadBuffer` function.

`mode`

  Specifies a color buffer. Accepted values are `GL_FRONT_LEFT`, `GL_FRONT_RIGHT`, `GL_BACK_LEFT`, `GL_BACK_RIGHT`, `GL_FRONT`, `GL_BACK`, `GL_LEFT`, `GL_RIGHT`, and the constants `GL_COLOR_ATTACHMENT` i.

## Description

`glReadBuffer` specifies a color buffer as the source for subsequent glReadPixels, glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubImage1D, glCopyTexSubImage2D, and glCopyTexSubImage3D commands. `mode` accepts one of twelve or more predefined values. In a fully configured system, `GL_FRONT`, `GL_LEFT`, and `GL_FRONT_LEFT` all name the front left buffer, `GL_FRONT_RIGHT` and `GL_RIGHT` name the front right buffer, and `GL_BACK_LEFT` and `GL_BACK` name the back left buffer. Further more, the constants `GL_COLOR_ATTACHMENT` i may be used to indicate the ith color attachment where i ranges from zero to the value of `GL_MAX_COLOR_ATTACHMENTS` minus one.

Nonstereo double-buffered configurations have only a front left and a back left buffer. Single-buffered configurations have a front left and a front right buffer if stereo, and only a front left buffer if nonstereo. It is an error to specify a nonexistent buffer to `glReadBuffer`.

`mode` is initially `GL_FRONT` in single-buffered configurations and `GL_BACK` in double-buffered configurations.

For `glReadBuffer`, the target framebuffer object is that bound to `GL_READ_FRAMEBUFFER`. For `glNamedFramebufferReadBuffer`, `framebuffer` must either be zero or the name of the target framebuffer object. If `framebuffer` is zero, then the default read framebuffer is affected.

## Errors

`GL_INVALID_ENUM` is generated if `mode` is not one of the twelve (or more) accepted values.

`GL_INVALID_OPERATION` is generated if `mode` specifies a buffer that does not exist.

`GL_INVALID_OPERATION` is generated by `glNamedFramebufferReadBuffer` if `framebuffer` is not zero or the name of an existing framebuffer object.

## Associated Gets

glGet with argument `GL_READ_BUFFER`

## 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
`glNamedFramebufferReadBuffer` | - | - | - | - | - | - | - | - | - | - | - | ✔
`glReadBuffer` | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔

## See Also

glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubImage1D, glCopyTexSubImage2D, glCopyTexSubImage3D, glDrawBuffer, glReadPixels

## Copyright

Copyright © 1991-2006 Silicon Graphics, Inc. Copyright © 2011-2014 Khronos Group. This document is licensed under the SGI Free Software B License. For details, see https://web.archive.org/web/20171022161616/http://oss.sgi.com/projects/FreeB/.

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