Visualization Library

A lightweight C++ OpenGL middleware for 2D/3D graphics
[Home] [Tutorials] [All Classes] [Grouped Classes]
Public Member Functions | Public Attributes | Friends

vl::FBORenderTarget Class Reference

Implements a framebuffer object to be used as a rendering target as specified by the ARB_framebuffer_object extension. More...

#include <FramebufferObject.hpp>

Inheritance diagram for vl::FBORenderTarget:
vl::RenderTarget vl::Object

List of all members.

Public Member Functions

 ~FBORenderTarget ()
 Destructor.
void create ()
 Creates a framebuffer object by calling glGenFramebuffers().
void destroy ()
 Deletes a framebuffer object by calling glDeleteFramebuffers().
void setHandle (GLuint handle)
 The handle of the framebuffer object as returned by glGenFramebuffers.
virtual GLuint handle () const
 The handle of the framebuffer object as returned by glGenFramebuffers.
virtual void bindFramebuffer (EFrameBufferBind target=FBB_FRAMEBUFFER)
 Makes the framebuffer the current rendering target calling glBindFramebuffer( GL_FRAMEBUFFER, FBORenderTarget::handle() ) and initializes all the previously defined attachment points.
GLenum checkFramebufferStatus ()
 Checks the framebuffer status and returns the value of glCheckFramebufferStatus()
void printFramebufferError (GLenum status) const
 Prints a human readable description of the error code as returned by glCheckFramebufferStatus()
void addColorAttachment (EAttachmentPoint attach_point, FBOColorBufferAttachment *attachment)
 Binds a color attachment to a framebuffer object.
void addTextureAttachment (EAttachmentPoint attach_point, FBOAbstractTextureAttachment *attachment)
 Binds a texture attachment to a framebuffer object.
void addDepthAttachment (FBOAbstractAttachment *attachment)
 Binds a depth attachment to a framebuffer object.
void addStencilAttachment (FBOAbstractAttachment *attachment)
 Binds a stencil attachment to a framebuffer object.
void addDepthStencilAttachment (FBOAbstractAttachment *attachment)
 Binds a depth-stencil attachment to a framebuffer object.
void removeAttachment (FBOAbstractAttachment *attachment)
 Unbinds the given attachments from a framebuffer object.
void removeAttachment (EAttachmentPoint attach_point)
 Unbinds the attachment associated to the given attachment point from a framebuffer object.
void removeAllAttachments ()
 Unbinds all attachments bound to a framebuffer object.
const std::map
< EAttachmentPoint, ref
< FBOAbstractAttachment > > & 
fboAttachments () const
 A map associating which fbo-attachment belongs to which attachment point in a framebuffer object.

Public Attributes

std::map< EAttachmentPoint,
ref< FBOAbstractAttachment > > 
mFBOAttachments
GLuint mHandle

Friends

class OpenGLContext

Detailed Description

Implements a framebuffer object to be used as a rendering target as specified by the ARB_framebuffer_object extension.

An FBORenderTarget belongs to one and only one OpenGLContext and can be created using the OpenGLContext::createFBORenderTarget() method. To render to a FBORenderTarget use the Rendering::setRenderTarget() function.

Remarks:
Before using any method from FBORenderTarget make sure that the appropriate OpenGL rendering context is active using FBORenderTarget::openglContext()->makeCurrent()
All the renderbuffer attachments must specify the same number of samples.
See also:

Definition at line 503 of file FramebufferObject.hpp.


Constructor & Destructor Documentation

vl::FBORenderTarget::~FBORenderTarget (  ) [inline]

Destructor.

Definition at line 523 of file FramebufferObject.hpp.


Member Function Documentation

void FBORenderTarget::create (  )

Creates a framebuffer object by calling glGenFramebuffers().

See also:
http://www.opengl.org/sdk/docs/man3/xhtml/glGenFramebuffers.xml

Definition at line 72 of file FramebufferObject.cpp.

References vl::OpenGLContext::makeCurrent(), mHandle, vl::RenderTarget::openglContext(), VL_CHECK, and VL_CHECK_OGL.

void FBORenderTarget::destroy (  )
void vl::FBORenderTarget::setHandle ( GLuint  handle ) [inline]

The handle of the framebuffer object as returned by glGenFramebuffers.

Definition at line 538 of file FramebufferObject.hpp.

virtual GLuint vl::FBORenderTarget::handle (  ) const [inline, virtual]

The handle of the framebuffer object as returned by glGenFramebuffers.

Reimplemented from vl::RenderTarget.

Definition at line 541 of file FramebufferObject.hpp.

Referenced by bindFramebuffer(), checkFramebufferStatus(), destroy(), and removeAttachment().

void FBORenderTarget::bindFramebuffer ( EFrameBufferBind  target = FBB_FRAMEBUFFER ) [virtual]
GLenum FBORenderTarget::checkFramebufferStatus (  )

Checks the framebuffer status and returns the value of glCheckFramebufferStatus()

Returns 0 if no FBO support is found otherwise returns the value obtained by VL_glCheckFramebufferStatus()

Definition at line 155 of file FramebufferObject.cpp.

References vl::Log::error(), vl::globalSettings(), handle(), vl::Has_FBO, vl::RenderTarget::height(), vl::OpenGLContext::makeCurrent(), mFBOAttachments, vl::RenderTarget::openglContext(), printFramebufferError(), vl::VEL_VERBOSITY_NORMAL, VL_CHECK, VL_CHECK_OGL, and vl::RenderTarget::width().

void FBORenderTarget::printFramebufferError ( GLenum  status ) const

Prints a human readable description of the error code as returned by glCheckFramebufferStatus()

Definition at line 200 of file FramebufferObject.cpp.

References vl::Log::bug(), and VL_TRAP.

Referenced by bindFramebuffer(), and checkFramebufferStatus().

void FBORenderTarget::addColorAttachment ( EAttachmentPoint  attach_point,
FBOColorBufferAttachment attachment 
)
void FBORenderTarget::addTextureAttachment ( EAttachmentPoint  attach_point,
FBOAbstractTextureAttachment attachment 
)
void FBORenderTarget::addDepthAttachment ( FBOAbstractAttachment attachment )

Binds a depth attachment to a framebuffer object.

The attachment parameter must point to either a FBODepthBufferAttachment or FBODepthStencilBufferAttachment.

Definition at line 263 of file FramebufferObject.cpp.

References vl::AP_DEPTH_ATTACHMENT, vl::FBOAbstractAttachment::bindAttachment(), vl::Has_FBO, mFBOAttachments, vl::FBOAbstractAttachment::mFBORenderTargets, removeAttachment(), and VL_CHECK.

void FBORenderTarget::addStencilAttachment ( FBOAbstractAttachment attachment )

Binds a stencil attachment to a framebuffer object.

The attachment parameter must point to either a FBOStencilBufferAttachment or FBODepthStencilBufferAttachment.

Definition at line 274 of file FramebufferObject.cpp.

References vl::AP_STENCIL_ATTACHMENT, vl::FBOAbstractAttachment::bindAttachment(), vl::Has_FBO, mFBOAttachments, vl::FBOAbstractAttachment::mFBORenderTargets, removeAttachment(), and VL_CHECK.

void FBORenderTarget::addDepthStencilAttachment ( FBOAbstractAttachment attachment )
void FBORenderTarget::removeAttachment ( FBOAbstractAttachment attachment )

Unbinds the given attachments from a framebuffer object.

Definition at line 296 of file FramebufferObject.cpp.

References vl::Has_FBO, mFBOAttachments, and VL_CHECK.

Referenced by addColorAttachment(), addDepthAttachment(), addDepthStencilAttachment(), addStencilAttachment(), addTextureAttachment(), and removeAllAttachments().

void FBORenderTarget::removeAttachment ( EAttachmentPoint  attach_point )
void FBORenderTarget::removeAllAttachments (  )

Unbinds all attachments bound to a framebuffer object.

Definition at line 343 of file FramebufferObject.cpp.

References vl::Has_FBO, mFBOAttachments, removeAttachment(), and VL_CHECK.

Referenced by destroy().

const std::map< EAttachmentPoint, ref<FBOAbstractAttachment> >& vl::FBORenderTarget::fboAttachments (  ) const [inline]

A map associating which fbo-attachment belongs to which attachment point in a framebuffer object.

Definition at line 587 of file FramebufferObject.hpp.


Friends And Related Function Documentation

friend class OpenGLContext [friend]

Reimplemented from vl::RenderTarget.

Definition at line 507 of file FramebufferObject.hpp.


Member Data Documentation

Definition at line 591 of file FramebufferObject.hpp.

Referenced by create(), and destroy().


The documentation for this class was generated from the following files:

Visualization Library 2011.07.1155 Reference Documentation
Copyright 2005-2011 Michele Bosi. All rights reserved.
Updated on Tue Jul 26 2011 11:11:27.
Permission is granted to use this page to write and publish articles regarding Visualization Library.