Difference between revisions of "GLAPI/glFramebufferTexture"

From OpenGL.org
Jump to: navigation, search
(See Also)
(Fixing typo.)
(5 intermediate revisions by 3 users not shown)
Line 8: Line 8:
 
== Function Definition ==
 
== Function Definition ==
  
   void '''glFramebufferTexture'''(GLenum ''target'', GLenum ''attachment'', GLuint ''texture'', GLint ''level'');
+
   void '''glFramebufferTexture'''(GLenum {{param|target}}, GLenum {{param|attachment}}, GLuint {{param|texture}}, GLint {{param|level}});
   void '''glFramebufferTexture1D'''(GLenum ''target'', GLenum ''attachment'', GLenum ''textarget'', GLuint ''texture'', GLint ''level'');
+
   void '''glFramebufferTexture1D'''(GLenum {{param|target}}, GLenum {{param|attachment}}, GLenum {{param|textarget}}, GLuint {{param|texture}}, GLint {{param|level}});
   void '''glFramebufferTexture2D'''(GLenum ''target'', GLenum ''attachment'', GLenum ''textarget'', GLuint ''texture'', GLint ''level'');
+
   void '''glFramebufferTexture2D'''(GLenum {{param|target}}, GLenum {{param|attachment}}, GLenum {{param|textarget}}, GLuint {{param|texture}}, GLint {{param|level}});
   void '''glFramebufferTexture3D'''(GLenum ''target'', GLenum ''attachment'', GLenum ''textarget'', GLuint ''texture'', GLint ''level'', GLint ''layer'');
+
   void '''glFramebufferTexture3D'''(GLenum {{param|target}}, GLenum {{param|attachment}}, GLenum {{param|textarget}}, GLuint {{param|texture}}, GLint {{param|level}}, GLint {{param|layer}});
  
 
; target
 
; target
: Specifies the framebuffer target. ''target'' must be {{code|GL_DRAW_FRAMEBUFFER}}, {{code|GL_READ_FRAMEBUFFER}}, or {{code|GL_FRAMEBUFFER}}. {{code|GL_FRAMEBUFFER}} is equivalent to {{code|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. ''attachment'' must be {{code|GL_COLOR_ATTACHMENT''i''}}, {{code|GL_DEPTH_ATTACHMENT}}, {{code|GL_STENCIL_ATTACHMENT}} or {{code|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 ''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.
 
; texture
 
; texture
: Specifies the texture object to attach to the framebuffer attachment point named by ''attachment''.
+
: Specifies the texture object to attach to the framebuffer attachment point named by {{param|attachment}}.
 
; level
 
; level
: Specifies the mipmap level of ''texture'' to attach.
+
: Specifies the mipmap level of {{param|texture}} to attach.
  
 
== 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 ''target''. ''target'' must be {{code|GL_DRAW_FRAMEBUFFER}}, {{code|GL_READ_FRAMEBUFFER}}, or {{code|GL_FRAMEBUFFER}}. {{code|GL_FRAMEBUFFER}} is equivalent to {{code|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}}.
  
''attachment'' specifies the logical attachment of the framebuffer and must be {{code|GL_COLOR_ATTACHMENT''i''}}, {{code|GL_DEPTH_ATTACHMENT}}, {{code|GL_STENCIL_ATTACHMENT}} or {{code|GL_DEPTH_STENCIL_ATTACHMMENT}}. ''i'' in {{code|GL_COLOR_ATTACHMENT''i''}} may range from zero to the value of {{code|GL_MAX_COLOR_ATTACHMENTS}} - 1. Attaching a level of a texture to {{code|GL_DEPTH_STENCIL_ATTACHMENT}} is equivalent to attaching that level to both the {{code|GL_DEPTH_ATTACHMENT}}''and'' the {{code|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.
  
''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 {{code|GL_TEXTURE_CUBE_MAP_POSITIVE_X}}{{code|GL_TEXTURE_CUBE_MAP_NEGATIVE_X}}, {{code|GL_TEXTURE_CUBE_MAP_POSITIVE_Y}}, {{code|GL_TEXTURE_CUBE_MAP_NEGATIVE_Y}}, {{code|GL_TEXTURE_CUBE_MAP_POSITIVE_Z}}, or {{code|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 ''texture'' is non-zero, the specified ''level'' of the texture object named ''texture'' is attached to the framebfufer 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 {{code|GL_TEXTURE_CUBE_MAP_POSITIVE_X}}, {{code|GL_TEXTURE_CUBE_MAP_POSITIVE_Y}}, {{code|GL_TEXTURE_CUBE_MAP_POSITIVE_Z}}, {{code|GL_TEXTURE_CUBE_MAP_NEGATIVE_X}}, {{code|GL_TEXTURE_CUBE_MAP_NEGATIVE_Y}}, or {{code|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 ''textarget'' is {{code|GL_TEXTURE_RECTANGLE}}, {{code|GL_TEXTURE_2D_MULTISAMPLE}}, or {{code|GL_TEXTURE_2D_MULTISAMPLE_ARRAY}}, then ''level'' must be zero. If ''textarget'' is {{code|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 {{code|GL_MAX_3D_TEXTURE_SIZE}}. If ''textarget'' is one of {{code|GL_TEXTURE_CUBE_MAP_POSITIVE_X}}, {{code|GL_TEXTURE_CUBE_MAP_POSITIVE_Y}}, {{code|GL_TEXTURE_CUBE_MAP_POSITIVE_Z}}, {{code|GL_TEXTURE_CUBE_MAP_NEGATIVE_X}}, {{code|GL_TEXTURE_CUBE_MAP_NEGATIVE_Y}}, or {{code|GL_TEXTURE_CUBE_MAP_NEGATIVE_Z}}, then ''level'' must be greater than or equal to zero and less than or equal to log<sub>2</sub> of the value of {{code|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 log<sub>2</sub> of the value of {{code|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}}.
  
''layer'' specifies the layer of a 2-dimensional image within a 3-dimensional texture.
+
{{param|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 {{code|GL_TEXTURE_1D}}. For '''glFramebufferTexture2D''', if ''texture'' is not zero, ''textarget'' must be one of {{code|GL_TEXTURE_2D}}, {{code|GL_TEXTURE_RECTANGLE}}, {{code|GL_TEXTURE_CUBE_MAP_POSITIVE_X}}, {{code|GL_TEXTURE_CUBE_MAP_POSITIVE_Y}}, {{code|GL_TEXTURE_CUBE_MAP_POSITIVE_Z}}, {{code|GL_TEXTURE_CUBE_MAP_NEGATIVE_X}}, {{code|GL_TEXTURE_CUBE_MAP_NEGATIVE_Y}}, {{code|GL_TEXTURE_CUBE_MAP_NEGATIVE_Z}}, or {{code|GL_TEXTURE_2D_MULTISAMPLE}}. For '''glFramebufferTexture3D''', if ''texture'' is not zero, then ''textarget'' must be {{code|GL_TEXTURE_3D}}.
+
For '''glFramebufferTexture1D''', if {{param|texture}} is not zero, then {{param|textarget}} must be {{enum|GL_TEXTURE_1D}}. For '''glFramebufferTexture2D''', if {{param|texture}} is not zero, {{param|textarget}} must be one of {{enum|GL_TEXTURE_2D}}, {{enum|GL_TEXTURE_RECTANGLE}}, {{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}}, {{enum|GL_TEXTURE_CUBE_MAP_NEGATIVE_Z}}, or {{enum|GL_TEXTURE_2D_MULTISAMPLE}}. For '''glFramebufferTexture3D''', if {{param|texture}} is not zero, then {{param|textarget}} must be {{enum|GL_TEXTURE_3D}}.
  
 
== Notes ==
 
== Notes ==
Line 46: Line 46:
 
== Errors ==
 
== Errors ==
  
{{code|GL_INVALID_ENUM}} is generated if ''target'' is not one of the accepted tokens.
+
{{enum|GL_INVALID_ENUM}} is generated if {{param|target}} is not one of the accepted tokens.
  
{{code|GL_INVALID_ENUM}} is generated if ''renderbuffertarget'' is not {{code|GL_RENDERBUFFER}}.
+
{{enum|GL_INVALID_ENUM}} is generated if {{param|renderbuffertarget}} is not {{enum|GL_RENDERBUFFER}}.
  
{{code|GL_INVALID_OPERATION}} is generated if zero is bound to ''target''.
+
{{enum|GL_INVALID_OPERATION}} is generated if zero is bound to {{param|target}}.
  
{{code|GL_INVALID_OPERATION}} is generated if ''textarget'' and ''texture'' are not compatible.
+
{{enum|GL_INVALID_OPERATION}} is generated if {{param|textarget}} and {{param|texture}} are not compatible.
  
 
== See Also ==
 
== See Also ==
  
[[GLAPI/glGenFramebuffers|glGenFramebuffers]], [[GLAPI/glBindFramebuffer|glBindFramebuffer]], {{apifunc|glFramebufferTextureLayer}}, {{apifunc|glFramebufferRenderbuffer}}
+
{{apifunc|glBindFramebuffer}}, {{apifunc|glFramebufferTextureLayer}}, {{apifunc|glFramebufferRenderbuffer}}
  
 
== Copyright ==
 
== Copyright ==

Revision as of 16:45, 12 January 2013

glFramebufferTexture
Core in version 4.5
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/.