glCheckFramebufferStatus — check the completeness status of a framebuffer
GLenum glCheckFramebufferStatus( | GLenum target) ; |
target
Specify the target of the framebuffer completeness check.
glCheckFramebufferStatus
queries the completeness status of the framebuffer object currently bound to target
. target
must be GL_DRAW_FRAMEBUFFER
, GL_READ_FRAMEBUFFER
or GL_FRAMEBUFFER
. GL_FRAMEBUFFER
is equivalent to GL_DRAW_FRAMEBUFFER
.
The return value is GL_FRAMEBUFFER_COMPLETE
if the framebuffer bound to target
is complete. Otherwise, the return value is determined as follows:
GL_FRAMEBUFFER_UNDEFINED
is returned if target
is the default framebuffer, but the default framebuffer does not exist.
GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
is returned if any of the framebuffer attachment points are framebuffer incomplete.
GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
is returned if the framebuffer does not have at least one image attached to it.
GL_FRAMEBUFFER_UNSUPPORTED
is returned if depth and stencil attachments, if present, are not the same renderbuffer, or if the combination of internal formats of the attached images violates an implementation-dependent set of restrictions.
GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE
is returned if the value of GL_RENDERBUFFER_SAMPLES
is not the same for all attached renderbuffers or, if the attached images are a mix of renderbuffers and textures, the value of GL_RENDERBUFFER_SAMPLES
is not zero.
Additionally, if an error occurs, zero is returned.
GL_INVALID_ENUM
is generated if target
is not GL_DRAW_FRAMEBUFFER
, GL_READ_FRAMEBUFFER
or GL_FRAMEBUFFER
.
// 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 texture_map; glGenTextures(1, &texture_map); glBindTexture(GL_TEXTURE_2D, texture_map); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, fbo_width, fbo_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); glBindTexture(GL_TEXTURE_2D, 0); // Build the texture that will serve as the depth attachment for the framebuffer. GLuint depth_texture; glGenTextures(1, &depth_texture); glBindTexture(GL_TEXTURE_2D, depth_texture); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, fbo_width, fbo_height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, NULL); glBindTexture(GL_TEXTURE_2D, 0); // Build the framebuffer. GLuint framebuffer; glGenFramebuffers(1, &framebuffer); glBindFramebuffer(GL_FRAMEBUFFER, (GLuint)framebuffer); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture_map, 0); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depth_texture, 0); GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) // Error glBindFramebuffer(GL_FRAMEBUFFER, 0);
Songho - OpenGL Frame Buffer Object (FBO)
open.gl - Framebuffers
open.gl - Geometry Shaders
opengl-tutorial.org - Tutorial 14 : Render To Texture
opengl-tutorial.org - Tutorial 16 : Shadow mapping
OpenGL ES API Version | |||
---|---|---|---|
Function Name | 2.0 | 3.0 | 3.1 |
glCheckFramebufferStatus | ✔ | ✔ | ✔ |
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. https://opencontent.org/openpub/.