OpenGL.GL.EXT.framebuffer_object
index
/home/mcfletch/pylive/OpenGL/GL/EXT/framebuffer_object.py

OpenGL extension EXT.framebuffer_object
 
This module customises the behaviour of the 
OpenGL.raw.GL.EXT.framebuffer_object to provide a more 
Python-friendly API
 
Overview (from the spec)
        
        This extension defines a simple interface for drawing to rendering
        destinations other than the buffers provided to the GL by the
        window-system.
        
        In this extension, these newly defined rendering destinations are
        known collectively as "framebuffer-attachable images".  This
        extension provides a mechanism for attaching framebuffer-attachable
        images to the GL framebuffer as one of the standard GL logical
        buffers: color, depth, and stencil.  (Attaching a
        framebuffer-attachable image to the accum logical buffer is left for
        a future extension to define).  When a framebuffer-attachable image
        is attached to the framebuffer, it is used as the source and
        destination of fragment operations as described in Chapter 4.
        
        By allowing the use of a framebuffer-attachable image as a rendering
        destination, this extension enables a form of "offscreen" rendering.
        Furthermore, "render to texture" is supported by allowing the images
        of a texture to be used as framebuffer-attachable images.  A
        particular image of a texture object is selected for use as a
        framebuffer-attachable image by specifying the mipmap level, cube
        map face (for a cube map texture), and z-offset (for a 3D texture)
        that identifies the image.  The "render to texture" semantics of
        this extension are similar to performing traditional rendering to
        the framebuffer, followed immediately by a call to CopyTexSubImage.
        However, by using this extension instead, an application can achieve
        the same effect, but with the advantage that the GL can usually
        eliminate the data copy that would have been incurred by calling
        CopyTexSubImage.
        
        This extension also defines a new GL object type, called a
        "renderbuffer", which encapsulates a single 2D pixel image.  The
        image of renderbuffer can be used as a framebuffer-attachable image
        for generalized offscreen rendering and it also provides a means to
        support rendering to GL logical buffer types which have no
        corresponding texture format (stencil, accum, etc).  A renderbuffer
        is similar to a texture in that both renderbuffers and textures can
        be independently allocated and shared among multiple contexts.  The
        framework defined by this extension is general enough that support
        for attaching images from GL objects other than textures and
        renderbuffers could be added by layered extensions.
        
        To facilitate efficient switching between collections of
        framebuffer-attachable images, this extension introduces another new
        GL object, called a framebuffer object.  A framebuffer object
        contains the state that defines the traditional GL framebuffer,
        including its set of images.  Prior to this extension, it was the
        window-system which defined and managed this collection of images,
        traditionally by grouping them into a "drawable".  The window-system
        API's would also provide a function (i.e., wglMakeCurrent,
        glXMakeCurrent, aglSetDrawable, etc.) to bind a drawable with a GL
        context (as is done in the WGL_ARB_pbuffer extension).  In this
        extension however, this functionality is subsumed by the GL and the
        GL provides the function BindFramebufferEXT to bind a framebuffer
        object to the current context.  Later, the context can bind back to
        the window-system-provided framebuffer in order to display rendered
        content.
        
        Previous extensions that enabled rendering to a texture have been
        much more complicated.  One example is the combination of
        ARB_pbuffer and ARB_render_texture, both of which are window-system
        extensions.  This combination requires calling MakeCurrent, an
        operation that may be expensive, to switch between the window and
        the pbuffer drawables.  An application must create one pbuffer per
        renderable texture in order to portably use ARB_render_texture.  An
        application must maintain at least one GL context per texture
        format, because each context can only operate on a single
        pixelformat or FBConfig.  All of these characteristics make
        ARB_render_texture both inefficient and cumbersome to use.
        
        EXT_framebuffer_object, on the other hand, is both simpler to use
        and more efficient than ARB_render_texture.  The
        EXT_framebuffer_object API is contained wholly within the GL API and
        has no (non-portable) window-system components.  Under
        EXT_framebuffer_object, it is not necessary to create a second GL
        context when rendering to a texture image whose format differs from
        that of the window.  Finally, unlike the pbuffers of
        ARB_render_texture, a single framebuffer object can facilitate
        rendering to an unlimited number of texture objects.
 
The official definition of this extension is available here:
http://www.opengl.org/registry/specs/EXT/framebuffer_object.txt

 
Modules
       
OpenGL.arrays
OpenGL.constant
OpenGL.constants
ctypes
OpenGL.extensions
OpenGL.GL.glget
OpenGL.platform
OpenGL.wrapper

 
Data
        EXTENSION_NAME = 'GL_EXT_framebuffer_object'
GL_COLOR_ATTACHMENT0_EXT = GL_COLOR_ATTACHMENT0_EXT
GL_COLOR_ATTACHMENT10_EXT = GL_COLOR_ATTACHMENT10_EXT
GL_COLOR_ATTACHMENT11_EXT = GL_COLOR_ATTACHMENT11_EXT
GL_COLOR_ATTACHMENT12_EXT = GL_COLOR_ATTACHMENT12_EXT
GL_COLOR_ATTACHMENT13_EXT = GL_COLOR_ATTACHMENT13_EXT
GL_COLOR_ATTACHMENT14_EXT = GL_COLOR_ATTACHMENT14_EXT
GL_COLOR_ATTACHMENT15_EXT = GL_COLOR_ATTACHMENT15_EXT
GL_COLOR_ATTACHMENT1_EXT = GL_COLOR_ATTACHMENT1_EXT
GL_COLOR_ATTACHMENT2_EXT = GL_COLOR_ATTACHMENT2_EXT
GL_COLOR_ATTACHMENT3_EXT = GL_COLOR_ATTACHMENT3_EXT
GL_COLOR_ATTACHMENT4_EXT = GL_COLOR_ATTACHMENT4_EXT
GL_COLOR_ATTACHMENT5_EXT = GL_COLOR_ATTACHMENT5_EXT
GL_COLOR_ATTACHMENT6_EXT = GL_COLOR_ATTACHMENT6_EXT
GL_COLOR_ATTACHMENT7_EXT = GL_COLOR_ATTACHMENT7_EXT
GL_COLOR_ATTACHMENT8_EXT = GL_COLOR_ATTACHMENT8_EXT
GL_COLOR_ATTACHMENT9_EXT = GL_COLOR_ATTACHMENT9_EXT
GL_DEPTH_ATTACHMENT_EXT = GL_DEPTH_ATTACHMENT_EXT
GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT = GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT
GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT = GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT
GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT = GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT
GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT = GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT
GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT = GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT
GL_FRAMEBUFFER_BINDING_EXT = GL_FRAMEBUFFER_BINDING_EXT
GL_FRAMEBUFFER_COMPLETE_EXT = GL_FRAMEBUFFER_COMPLETE_EXT
GL_FRAMEBUFFER_EXT = GL_FRAMEBUFFER_EXT
GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT = GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT
GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT = GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT
GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT = GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT
GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT = GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT
GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT = GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT
GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT = GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT
GL_FRAMEBUFFER_UNSUPPORTED_EXT = GL_FRAMEBUFFER_UNSUPPORTED_EXT
GL_INVALID_FRAMEBUFFER_OPERATION_EXT = GL_INVALID_FRAMEBUFFER_OPERATION_EXT
GL_MAX_COLOR_ATTACHMENTS_EXT = GL_MAX_COLOR_ATTACHMENTS_EXT
GL_MAX_RENDERBUFFER_SIZE_EXT = GL_MAX_RENDERBUFFER_SIZE_EXT
GL_RENDERBUFFER_ALPHA_SIZE_EXT = GL_RENDERBUFFER_ALPHA_SIZE_EXT
GL_RENDERBUFFER_BINDING_EXT = GL_RENDERBUFFER_BINDING_EXT
GL_RENDERBUFFER_BLUE_SIZE_EXT = GL_RENDERBUFFER_BLUE_SIZE_EXT
GL_RENDERBUFFER_DEPTH_SIZE_EXT = GL_RENDERBUFFER_DEPTH_SIZE_EXT
GL_RENDERBUFFER_EXT = GL_RENDERBUFFER_EXT
GL_RENDERBUFFER_GREEN_SIZE_EXT = GL_RENDERBUFFER_GREEN_SIZE_EXT
GL_RENDERBUFFER_HEIGHT_EXT = GL_RENDERBUFFER_HEIGHT_EXT
GL_RENDERBUFFER_INTERNAL_FORMAT_EXT = GL_RENDERBUFFER_INTERNAL_FORMAT_EXT
GL_RENDERBUFFER_RED_SIZE_EXT = GL_RENDERBUFFER_RED_SIZE_EXT
GL_RENDERBUFFER_STENCIL_SIZE_EXT = GL_RENDERBUFFER_STENCIL_SIZE_EXT
GL_RENDERBUFFER_WIDTH_EXT = GL_RENDERBUFFER_WIDTH_EXT
GL_STENCIL_ATTACHMENT_EXT = GL_STENCIL_ATTACHMENT_EXT
GL_STENCIL_INDEX16_EXT = GL_STENCIL_INDEX16_EXT
GL_STENCIL_INDEX1_EXT = GL_STENCIL_INDEX1_EXT
GL_STENCIL_INDEX4_EXT = GL_STENCIL_INDEX4_EXT
GL_STENCIL_INDEX8_EXT = GL_STENCIL_INDEX8_EXT
__file__ = '/home/mcfletch/pylive/OpenGL/GL/EXT/framebuffer_object.pyc'
__name__ = 'OpenGL.GL.EXT.framebuffer_object'
__package__ = 'OpenGL.GL.EXT'
glBindFramebufferEXT = <OpenGL.platform.baseplatform.glBindFramebufferEXT object at 0x650fdd0>
glBindRenderbufferEXT = <OpenGL.platform.baseplatform.glBindRenderbufferEXT object at 0x650fad0>
glCheckFramebufferStatusEXT = <OpenGL.platform.baseplatform.glCheckFramebufferStatusEXT object at 0x6514050>
glDeleteFramebuffersEXT = OpenGL.lazywrapper.lazy( 'glDeleteFramebuffersEXT' )
glDeleteRenderbuffersEXT = <OpenGL.platform.baseplatform.glDeleteRenderbuffersEXT object at 0x650fb10>
glFramebufferRenderbufferEXT = <OpenGL.platform.baseplatform.glFramebufferRenderbufferEXT object at 0x6514210>
glFramebufferTexture1DEXT = <OpenGL.platform.baseplatform.glFramebufferTexture1DEXT object at 0x6514090>
glFramebufferTexture2DEXT = <OpenGL.platform.baseplatform.glFramebufferTexture2DEXT object at 0x6514110>
glFramebufferTexture3DEXT = <OpenGL.platform.baseplatform.glFramebufferTexture3DEXT object at 0x6514190>
glGenFramebuffersEXT = <OpenGL.wrapper.glGenFramebuffersEXT object at 0x6310b00>
glGenRenderbuffersEXT = <OpenGL.wrapper.glGenRenderbuffersEXT object at 0x630fcf8>
glGenerateMipmapEXT = <OpenGL.platform.baseplatform.glGenerateMipmapEXT object at 0x6514390>
glGetFramebufferAttachmentParameterivEXT = <OpenGL.platform.baseplatform.glGetFramebufferAttachmentParameterivEXT object at 0x6514290>
glGetRenderbufferParameterivEXT = <OpenGL.platform.baseplatform.glGetRenderbufferParameterivEXT object at 0x650fc50>
glIsFramebufferEXT = <OpenGL.platform.baseplatform.glIsFramebufferEXT object at 0x650fd90>
glIsRenderbufferEXT = <OpenGL.platform.baseplatform.glIsRenderbufferEXT object at 0x650fa50>
glRenderbufferStorageEXT = <OpenGL.platform.baseplatform.glRenderbufferStorageEXT object at 0x650fbd0>