GLAPI/glFramebufferTexture

From OpenGL.org
Jump to: navigation, search
glFramebufferTexture
Core in version 4.4
Core since version 3.2
ARB extension ARB_geometry_shader4

glFramebufferTexture: attach a level of a texture object as a logical buffer to the currently bound framebuffer object

Function Definition

 void glFramebufferTexture(GLenum target​, GLenum attachment​, GLuint texture​, GLint level​);
 void glFramebufferTexture1D(GLenum target​, GLenum attachment​, GLenum textarget​, GLuint texture​, GLint level​);
 void glFramebufferTexture2D(GLenum target​, GLenum attachment​, GLenum textarget​, GLuint texture​, GLint level​);
 void glFramebufferTexture3D(GLenum target​, GLenum attachment​, GLenum textarget​, GLuint texture​, GLint level​, GLint layer​);
target
Specifies the framebuffer target. target​ must be GL_DRAW_FRAMEBUFFER​, GL_READ_FRAMEBUFFER​, or GL_FRAMEBUFFER​. GL_FRAMEBUFFER​ is equivalent to GL_DRAW_FRAMEBUFFER​.
attachment
Specifies the attachment point of the framebuffer. attachment​ must be GL_COLOR_ATTACHMENTi, GL_DEPTH_ATTACHMENT​, GL_STENCIL_ATTACHMENT​ or GL_DEPTH_STENCIL_ATTACHMENT​.
textarget
For glFramebufferTexture1D, glFramebufferTexture2D and glFramebufferTexture3D, specifies what type of texture is expected in the texture​ parameter, or for cube map textures, which face is to be attached.
texture
Specifies the texture object to attach to the framebuffer attachment point named by attachment​.
level
Specifies the mipmap level of texture​ to attach.

Description

glFramebufferTexture, glFramebufferTexture1D, glFramebufferTexture2D, and glFramebufferTexture3D attach a selected mipmap level or image of a texture object as one of the logical buffers 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​.

attachment​ specifies the logical attachment of the framebuffer and must be GL_COLOR_ATTACHMENTi, GL_DEPTH_ATTACHMENT​, GL_STENCIL_ATTACHMENT​ or GL_DEPTH_STENCIL_ATTACHMENT​. i in GL_COLOR_ATTACHMENTi may range from zero to the value of GL_MAX_COLOR_ATTACHMENTS​ - 1. Attaching a level of a texture to GL_DEPTH_STENCIL_ATTACHMENT​ is equivalent to attaching that level to both the GL_DEPTH_ATTACHMENT​and the GL_STENCIL_ATTACHMENT​ attachment points simultaneously.

textarget​ specifies what type of texture is named by texture​, and for cube map textures, specifies the face that is to be attached. If texture​ is not zero, it must be the name of an existing texture with type textarget​, unless it is a cube map texture, in which case textarget​ must be GL_TEXTURE_CUBE_MAP_POSITIVE_X​GL_TEXTURE_CUBE_MAP_NEGATIVE_X​, GL_TEXTURE_CUBE_MAP_POSITIVE_Y​, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y​, GL_TEXTURE_CUBE_MAP_POSITIVE_Z​, or GL_TEXTURE_CUBE_MAP_NEGATIVE_Z​.

If texture​ is non-zero, the specified level​ of the texture object named texture​ is attached to the framebuffer attachment point named by attachment​. For glFramebufferTexture1D, glFramebufferTexture2D, and glFramebufferTexture3D, texture​ must be zero or the name of an existing texture with a target of textarget​, or texture​ must be the name of an existing cube-map texture and textarget​ must be one of GL_TEXTURE_CUBE_MAP_POSITIVE_X​, GL_TEXTURE_CUBE_MAP_POSITIVE_Y​, GL_TEXTURE_CUBE_MAP_POSITIVE_Z​, GL_TEXTURE_CUBE_MAP_NEGATIVE_X​, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y​, or GL_TEXTURE_CUBE_MAP_NEGATIVE_Z​.

If textarget​ is GL_TEXTURE_RECTANGLE​, GL_TEXTURE_2D_MULTISAMPLE​, or GL_TEXTURE_2D_MULTISAMPLE_ARRAY​, then level​ must be zero. If textarget​ is GL_TEXTURE_3D​, then level must be greater than or equal to zero and less than or equal to log2 of the value of GL_MAX_3D_TEXTURE_SIZE​. If textarget​ is one of GL_TEXTURE_CUBE_MAP_POSITIVE_X​, GL_TEXTURE_CUBE_MAP_POSITIVE_Y​, GL_TEXTURE_CUBE_MAP_POSITIVE_Z​, GL_TEXTURE_CUBE_MAP_NEGATIVE_X​, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y​, or GL_TEXTURE_CUBE_MAP_NEGATIVE_Z​, then level​ must be greater than or equal to zero and less than or equal to log2 of the value of GL_MAX_CUBE_MAP_TEXTURE_SIZE​. For all other values of textarget​, level​ must be greater than or equal to zero and no larger than log2 of the value of GL_MAX_TEXTURE_SIZE​.

layer​ specifies the layer of a 2-dimensional image within a 3-dimensional texture.

For glFramebufferTexture1D, if texture​ is not zero, then textarget​ must be GL_TEXTURE_1D​. For glFramebufferTexture2D, if texture​ is not zero, textarget​ must be one of GL_TEXTURE_2D​, GL_TEXTURE_RECTANGLE​, GL_TEXTURE_CUBE_MAP_POSITIVE_X​, GL_TEXTURE_CUBE_MAP_POSITIVE_Y​, GL_TEXTURE_CUBE_MAP_POSITIVE_Z​, GL_TEXTURE_CUBE_MAP_NEGATIVE_X​, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y​, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z​, or GL_TEXTURE_2D_MULTISAMPLE​. For glFramebufferTexture3D, if texture​ is not zero, then textarget​ must be GL_TEXTURE_3D​.

Notes

glFramebufferTexture is available only if the GL version is 3.2 or greater.

Errors

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

GL_INVALID_ENUM​ is generated if renderbuffertarget​ is not GL_RENDERBUFFER​.

GL_INVALID_OPERATION​ is generated if zero is bound to target​.

GL_INVALID_OPERATION​ is generated if textarget​ and texture​ are not compatible.

See Also

glBindFramebuffer, glFramebufferTextureLayer, glFramebufferRenderbuffer

Copyright

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