glGetFramebufferAttachmentParameteriv and glGetNamedFramebufferAttachmentParameteriv return parameters of
attachments of a specified framebuffer object.
For glGetFramebufferAttachmentParameteriv, the framebuffer object is that bound to target, which must be
one of GL_DRAW_FRAMEBUFFER, GL_READ_FRAMEBUFFER or GL_FRAMEBUFFER. GL_FRAMEBUFFER is equivalent to
GL_DRAW_FRAMEBUFFER. Buffers of default framebuffers may also be queried if bound to target.
For glGetNamedFramebufferAttachmentParameteriv, framebuffer is the name of the framebuffer object. If
framebuffer is zero, the default draw framebuffer is queried.
If the specified framebuffer is a framebuffer object, attachment must be one of GL_DEPTH_ATTACHMENT,
GL_STENCIL_ATTACHMENTGL_DEPTH_STENCIL_ATTACHMENT, or GL_COLOR_ATTACHMENTi, where i is between zero and
the value of GL_MAX_COLOR_ATTACHMENTS minus one.
If the specified framebuffer is a default framebuffer, target, attachment must be one of GL_FRONT_LEFT,
GL_FRONT_RIGHT, GL_BACK_LEFT, GL_BACK_RIGHT, GL_DEPTH or GL_STENCIL, identifying the corresponding
buffer.
If attachment is GL_DEPTH_STENCIL_ATTACHMENT, the same object must be bound to both the depth and stencil
attachment points of the framebuffer object, and information about that object is returned.
Upon successful return, 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, then either no framebuffer is bound to
target; or a default framebuffer is queried, attachment is GL_DEPTH or GL_STENCIL, and the number of
depth or stencil bits, respectively, is zero. In this case querying pnameGL_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. If the requested component is not present in the attachment, or if no
data storage or texture image has been specified for the attachment, then params will contain zero.
• If pname is GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE, then 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 no data storage or texture image has been specified for the
attachment, then params will contain GL_NONE. This query cannot be performed for a combined
depth+stencil attachment, since it does not have a single format.
• If pname is GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, then params 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 the OpenGL Specification. For a 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 attachment
is not a color attachment, or if no data storage or texture image has been specified for the
attachment, then params will contain GL_LINEAR.
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 value of
GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is the name of a cube map texture object, then params will
contain the cube map face of the cubemap texture object which contains the attached image. Otherwise
params will contain zero.
• If pname is GL_FRAMEBUFFER_ATTACHMENT_LAYERED, then params will contain GL_TRUE if an entire level of
a three-dimensional texture, cube map texture, or one-or two-dimensional array texture is attached.
Otherwise, params will contain GL_FALSE.
• If pname is GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER; the value of
GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is the name of a three-dimensional, or a one- or
two-dimensional array texture; and the value of GL_FRAMEBUFFER_ATTACHMENT_LAYERED is GL_FALSE, then
params will contain the texture layer which contains the attached image. Otherwise params will
contain zero.