GLAPI/glFramebufferTexture: Difference between revisions

From OpenGL Wiki
Jump to navigation Jump to search
m (Bot: Adding better formatting.)
m (Bot: Adding better formatting.)
 
(4 intermediate revisions by 3 users not shown)
Line 16: Line 16:
: Specifies the framebuffer target. {{param|target}} must be {{enum|GL_DRAW_FRAMEBUFFER}}, {{enum|GL_READ_FRAMEBUFFER}}, or {{enum|GL_FRAMEBUFFER}}. {{enum|GL_FRAMEBUFFER}} is equivalent to {{enum|GL_DRAW_FRAMEBUFFER}}.
: Specifies the framebuffer target. {{param|target}} must be {{enum|GL_DRAW_FRAMEBUFFER}}, {{enum|GL_READ_FRAMEBUFFER}}, or {{enum|GL_FRAMEBUFFER}}. {{enum|GL_FRAMEBUFFER}} is equivalent to {{enum|GL_DRAW_FRAMEBUFFER}}.
; attachment
; attachment
: Specifies the attachment point of the framebuffer. {{param|attachment}} must be {{enum|GL_COLOR_ATTACHMENT''i''}}, {{enum|GL_DEPTH_ATTACHMENT}}, {{enum|GL_STENCIL_ATTACHMENT}} or {{enum|GL_DEPTH_STENCIL_ATTACHMMENT}}.
: Specifies the attachment point of the framebuffer. {{param|attachment}} must be {{enum|GL_COLOR_ATTACHMENT''i''}}, {{enum|GL_DEPTH_ATTACHMENT}}, {{enum|GL_STENCIL_ATTACHMENT}} or {{enum|GL_DEPTH_STENCIL_ATTACHMENT}}.
; textarget
; textarget
: For '''glFramebufferTexture1D''', '''glFramebufferTexture2D''' and '''glFramebufferTexture3D''', specifies what type of texture is expected in the {{param|texture}} parameter, or for cube map textures, which face is to be attached.
: For '''glFramebufferTexture1D''', '''glFramebufferTexture2D''' and '''glFramebufferTexture3D''', specifies what type of texture is expected in the {{param|texture}} parameter, or for cube map textures, which face is to be attached.
Line 26: Line 26:
== Description ==
== Description ==


'''glFramebufferTexture''', '''glFramebufferTexture1D''', '''glFramebufferTexture2D''', and '''glFramebufferTexture''' attach a selected mipmap level or image of a texture object as one of the logical buffers of the framebuffer object currently bound to {{param|target}}. {{param|target}} must be {{enum|GL_DRAW_FRAMEBUFFER}}, {{enum|GL_READ_FRAMEBUFFER}}, or {{enum|GL_FRAMEBUFFER}}. {{enum|GL_FRAMEBUFFER}} is equivalent to {{enum|GL_DRAW_FRAMEBUFFER}}.
'''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 {{param|target}}. {{param|target}} must be {{enum|GL_DRAW_FRAMEBUFFER}}, {{enum|GL_READ_FRAMEBUFFER}}, or {{enum|GL_FRAMEBUFFER}}. {{enum|GL_FRAMEBUFFER}} is equivalent to {{enum|GL_DRAW_FRAMEBUFFER}}.


{{param|attachment}} specifies the logical attachment of the framebuffer and must be {{enum|GL_COLOR_ATTACHMENT''i''}}, {{enum|GL_DEPTH_ATTACHMENT}}, {{enum|GL_STENCIL_ATTACHMENT}} or {{enum|GL_DEPTH_STENCIL_ATTACHMMENT}}. ''i'' in {{enum|GL_COLOR_ATTACHMENT''i''}} may range from zero to the value of {{enum|GL_MAX_COLOR_ATTACHMENTS}} - 1. Attaching a level of a texture to {{enum|GL_DEPTH_STENCIL_ATTACHMENT}} is equivalent to attaching that level to both the {{enum|GL_DEPTH_ATTACHMENT}}''and'' the {{enum|GL_STENCIL_ATTACHMENT}} attachment points simultaneously.
{{param|attachment}} specifies the logical attachment of the framebuffer and must be {{enum|GL_COLOR_ATTACHMENT''i''}}, {{enum|GL_DEPTH_ATTACHMENT}}, {{enum|GL_STENCIL_ATTACHMENT}} or {{enum|GL_DEPTH_STENCIL_ATTACHMENT}}. ''i'' in {{enum|GL_COLOR_ATTACHMENT''i''}} may range from zero to the value of {{enum|GL_MAX_COLOR_ATTACHMENTS}} - 1. Attaching a level of a texture to {{enum|GL_DEPTH_STENCIL_ATTACHMENT}} is equivalent to attaching that level to both the {{enum|GL_DEPTH_ATTACHMENT}}''and'' the {{enum|GL_STENCIL_ATTACHMENT}} attachment points simultaneously.


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


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


If {{param|textarget}} is {{enum|GL_TEXTURE_RECTANGLE}}, {{enum|GL_TEXTURE_2D_MULTISAMPLE}}, or {{enum|GL_TEXTURE_2D_MULTISAMPLE_ARRAY}}, then {{param|level}} must be zero. If {{param|textarget}} is {{enum|GL_TEXTURE_3D}}, then level must be greater than or equal to zero and less than or equal to log<sub>2</sub> of the value of {{enum|GL_MAX_3D_TEXTURE_SIZE}}. If {{param|textarget}} is one of {{enum|GL_TEXTURE_CUBE_MAP_POSITIVE_X}}, {{enum|GL_TEXTURE_CUBE_MAP_POSITIVE_Y}}, {{enum|GL_TEXTURE_CUBE_MAP_POSITIVE_Z}}, {{enum|GL_TEXTURE_CUBE_MAP_NEGATIVE_X}}, {{enum|GL_TEXTURE_CUBE_MAP_NEGATIVE_Y}}, or {{enum|GL_TEXTURE_CUBE_MAP_NEGATIVE_Z}}, then {{param|level}} must be greater than or equal to zero and less than or equal to log<sub>2</sub> of the value of {{enum|GL_MAX_CUBE_MAP_TEXTURE_SIZE}}. For all other values of {{param|textarget}}, {{param|level}} must be greater than or equal to zero and no larger than log<sub>2</sub> of the value of {{enum|GL_MAX_TEXTURE_SIZE}}.
If {{param|textarget}} is {{enum|GL_TEXTURE_RECTANGLE}}, {{enum|GL_TEXTURE_2D_MULTISAMPLE}}, or {{enum|GL_TEXTURE_2D_MULTISAMPLE_ARRAY}}, then {{param|level}} must be zero. If {{param|textarget}} is {{enum|GL_TEXTURE_3D}}, then level must be greater than or equal to zero and less than or equal to log<sub>2</sub> of the value of {{enum|GL_MAX_3D_TEXTURE_SIZE}}. If {{param|textarget}} is one of {{enum|GL_TEXTURE_CUBE_MAP_POSITIVE_X}}, {{enum|GL_TEXTURE_CUBE_MAP_POSITIVE_Y}}, {{enum|GL_TEXTURE_CUBE_MAP_POSITIVE_Z}}, {{enum|GL_TEXTURE_CUBE_MAP_NEGATIVE_X}}, {{enum|GL_TEXTURE_CUBE_MAP_NEGATIVE_Y}}, or {{enum|GL_TEXTURE_CUBE_MAP_NEGATIVE_Z}}, then {{param|level}} must be greater than or equal to zero and less than or equal to log<sub>2</sub> of the value of {{enum|GL_MAX_CUBE_MAP_TEXTURE_SIZE}}. For all other values of {{param|textarget}}, {{param|level}} must be greater than or equal to zero and no larger than log<sub>2</sub> of the value of {{enum|GL_MAX_TEXTURE_SIZE}}.
Line 56: Line 56:
== See Also ==
== See Also ==


{{apifunc|glGenFramebuffers}}, {{apifunc|glBindFramebuffer}}, {{apifunc|glFramebufferTextureLayer}}, {{apifunc|glFramebufferRenderbuffer}}
{{apifunc|glBindFramebuffer}}, {{apifunc|glFramebufferTextureLayer}}, {{apifunc|glFramebufferRenderbuffer}}


== Copyright ==
== Copyright ==
Line 64: Line 64:
[[Category:Core API Ref Framebuffer Objects|FramebufferTexture]]
[[Category:Core API Ref Framebuffer Objects|FramebufferTexture]]
[[Category:Core API Reference|FramebufferTexture]]
[[Category:Core API Reference|FramebufferTexture]]
[[Category:Framebuffer Object API State Functions|FramebufferTexture]]

Latest revision as of 09:57, 15 August 2013

glFramebufferTexture
Core in version 4.6
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_ATTACHMENTand 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_XGL_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/.