GLAPI/glGetFramebufferAttachmentParameter

From OpenGL.org
Jump to: navigation, search
glGetFramebufferAttachmentParameter
Core in version 4.4
Core since version 3.0

glGetFramebufferAttachmentParameter: retrieve information about attachments of a bound framebuffer object

Function Definition

 void glGetFramebufferAttachmentParameteriv(GLenum target​, GLenum attachment​, GLenum pname​, GLint *params​);
 
target
Specifies the target of the query operation.
attachment
Specifies the attachment within target​
pname
Specifies the parameter of attachment​ to query.
params
Specifies the address of a variable receive the value of pname​ for attachment​.

Description

glGetFramebufferAttachmentParameteriv returns information about attachments of a bound framebuffer object. target​ specifies the framebuffer binding point and must be GL_DRAW_FRAMEBUFFER​, GL_READ_FRAMEBUFFER​ or GL_FRAMEBUFFER​. GL_FRAMEBUFFER​ is equivalent to GL_DRAW_FRAMEBUFFER​.

If the default framebuffer is bound to target​ then attachment​ must be one of GL_FRONT_LEFT​, GL_FRONT_RIGHT​, GL_BACK_LEFT​, or GL_BACK_RIGHT​, identifying a color buffer, GL_DEPTH​, identifying the depth buffer, or GL_STENCIL​, identifying the stencil buffer.

If a framebuffer object is bound, then attachment​ must be one of GL_COLOR_ATTACHMENTi, GL_DEPTH_ATTACHMENT​, GL_STENCIL_ATTACHMENT​, or GL_DEPTH_STENCIL_ATTACHMENT​. i in GL_COLOR_ATTACHMENTi must be in the range zero to the value of GL_MAX_COLOR_ATTACHMENTS​ - 1.

If attachment​ is GL_DEPTH_STENCIL_ATTACHMENT​ and different objects are bound to the depth and stencil attachment points of target​ the query will fail. If the same object is bound to both attachment points, information about that object will be returned.

Upon successful return from glGetFramebufferAttachmentParameteriv, if pname​ is GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE​, then params​ will contain one of GL_NONE​, GL_FRAMEBUFFER_DEFAULT​, GL_TEXTURE​, or GL_RENDERBUFFER​, identifying the type of object which contains the attached image. Other values accepted for pname​ depend on the type of object, as described below.

If the value of GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE​ is GL_NONE​, no framebuffer is bound to target​. In this case querying pname​GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME​ will return zero, and all other queries will generate an error.

If the value of GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE​ is not GL_NONE​, these queries apply to all other framebuffer types:

  • If pname​ is GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE​, GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE​, GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE​, GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE​, GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE​, or GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE​, then params​ will contain the number of bits in the corresponding red, green, blue, alpha, depth, or stencil component of the specified attachment. Zero is returned if the requested component is not present in attachment​.
  • If pname​ is GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE​, params​ will contain the format of components of the specified attachment, one of GL_FLOAT​, GL_INT​, GL_UNSIGNED_INT​, GL_SIGNED_NORMALIZED​, or GL_UNSIGNED_NORMALIZED​ for floating-point, signed integer, unsigned integer, signed normalized fixed-point, or unsigned normalized fixed-point components respectively. Only color buffers may have integer components.
  • If pname​ is GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING​, param​ will contain the encoding of components of the specified attachment, one of GL_LINEAR​ or GL_SRGB​ for linear or sRGB-encoded components, respectively. Only color buffer components may be sRGB-encoded; such components are treated as described in sections 4.1.7 and 4.1.8. For the default framebuffer, color encoding is determined by the implementation. For framebuffer objects, components are sRGB-encoded if the internal format of a color attachment is one of the color-renderable SRGB formats.

If the value of GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE​ is GL_RENDERBUFFER​, then:

  • If pname​ is GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME​, params​ will contain the name of the renderbuffer object which contains the attached image.

If the value of GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE​ is GL_TEXTURE​, then:

  • If pname​ is GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME​, then params​ will contain the name of the texture object which contains the attached image.
  • If pname​ is GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL​, then params​ will contain the mipmap level of the texture object which contains the attached image.
  • If pname​ is GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE​ and the texture object named GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME​ is a cube map texture, then params​ will contain the cube map face of the cubemap texture object which contains the attached image. Otherwise params​ will contain the value zero.
  • If pname​ is GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER​ and the texture object named GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME​ is a layer of a three-dimensional texture or a one-or two-dimensional array texture, then params​ will contain the number of the texture layer which contains the attached image. Otherwise params​ will contain the value zero.
  • If pname​ is GL_FRAMEBUFFER_ATTACHMENT_LAYERED​, then params​ will contain GL_TRUE​ if an entire level of a three-dimesional texture, cube map texture, or one-or two-dimensional array texture is attached. Otherwise, params​ will contain GL_FALSE​.

Any combinations of framebuffer type and pname​ not described above will generate an error.

Errors

GL_INVALID_ENUM​ is generated if target​ is not one of the accepted tokens.

GL_INVALID_ENUM​ is generated if pname​ is not valid for the value of GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE​.

GL_INVALID_OPERATION​ is generated if attachment​ is not the accepted values for target​.

GL_INVALID_OPERATION​ is generated if attachment​ is GL_DEPTH_STENCIL_ATTACHMENT​ and different objects are bound to the depth and stencil attachment points of target​.

GL_INVALID_OPERATION​ is generated if the value of GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE​ is GL_NONE​ and pname​ is not GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME​.

See Also

glBindFramebuffer, glFramebufferParameter, glGetFramebufferParameter

Copyright

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