Light | Dark

glRenderbufferStorage

Name

glRenderbufferStorage, glNamedRenderbufferStorage — establish data storage, format and dimensions of a renderbuffer object's image

C Specification

void glRenderbufferStorage( GLenum target,
GLenum internalformat,
GLsizei width,
GLsizei height);
void glNamedRenderbufferStorage( GLuint renderbuffer,
GLenum internalformat,
GLsizei width,
GLsizei height);

Parameters

target

Specifies a binding target of the allocation for glRenderbufferStorage function. Must be GL_RENDERBUFFER.

renderbuffer

Specifies the name of the renderbuffer object for glNamedRenderbufferStorage function.

internalformat

Specifies the internal format to use for the renderbuffer object's image.

width

Specifies the width of the renderbuffer, in pixels.

height

Specifies the height of the renderbuffer, in pixels.

Description

glRenderbufferStorage is equivalent to calling glRenderbufferStorageMultisample with the samples set to zero, and glNamedRenderbufferStorage is equivalent to calling glNamedRenderbufferStorageMultisample with the samples set to zero.

For glRenderbufferStorage, the target of the operation, specified by target must be GL_RENDERBUFFER. For glNamedRenderbufferStorage, renderbuffer must be a name of an existing renderbuffer object. internalformat specifies the internal format to be used for the renderbuffer object's storage and must be a color-renderable, depth-renderable, or stencil-renderable format. width and height are the dimensions, in pixels, of the renderbuffer. Both width and height must be less than or equal to the value of GL_MAX_RENDERBUFFER_SIZE.

Upon success, glRenderbufferStorage and glNamedRenderbufferStorage delete any existing data store for the renderbuffer image and the contents of the data store after calling glRenderbufferStorage are undefined.

Errors

GL_INVALID_ENUM is generated by glRenderbufferStorage if target is not GL_RENDERBUFFER.

GL_INVALID_OPERATION is generated by glNamedRenderbufferStorage if renderbuffer is not the name of an existing renderbuffer object.

GL_INVALID_VALUE is generated if either of width or height is negative, or greater than the value of GL_MAX_RENDERBUFFER_SIZE.

GL_INVALID_ENUM is generated if internalformat is not a color-renderable, depth-renderable, or stencil-renderable format.

GL_OUT_OF_MEMORY is generated if the GL is unable to create a data store of the requested size.

Examples

Create a framebuffer object with a renderbuffer-based color attachment and a renderbuffer-based depth attachment.
// fbo_width and fbo_height are the desired width and height of the FBO.
// For Opengl <= 4.4 or if the GL_ARB_texture_non_power_of_two extension
// is present, fbo_width and fbo_height can be values other than 2^n for
// some integer n.

// Build the texture that will serve as the color attachment for the framebuffer.
GLuint color_renderbuffer;
glGenRenderbuffers(1, &color_renderbuffer);
glBindRenderbuffer( GL_RENDERBUFFER, (GLuint)color_renderbuffer );
glRenderbufferStorage( GL_RENDERBUFFER, GL_RGBA8, fbo_width, fbo_height );
glBindRenderbuffer( GL_RENDERBUFFER, 0 );

// Build the texture that will serve as the depth attachment for the framebuffer.
GLuint depth_renderbuffer;
glGenRenderbuffers(1, &depth_renderbuffer);
glBindRenderbuffer( GL_RENDERBUFFER, (GLuint)depth_renderbuffer );
glRenderbufferStorage( GL_RENDERBUFFER, GL_DEPTH_COMPONENT, fbo_width, fbo_height );
glBindRenderbuffer( GL_RENDERBUFFER, 0 );

// Build the framebuffer.
GLuint framebuffer;
glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, (GLuint)framebuffer);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, color_renderbuffer);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depth_renderbuffer);

GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
if (status != GL_FRAMEBUFFER_COMPLETE)
    // Error

glBindFramebuffer(GL_FRAMEBUFFER, 0);

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
glNamedRenderbufferStorage - - - - - - - - - - -
glRenderbufferStorage - -
Think you can improve this page? Edit this page on GitHub.