Visualization LibraryA lightweight C++ OpenGL middleware for 2D/3D graphics |
[Home] [Tutorials] [All Classes] [Grouped Classes] |
Implements a framebuffer object to be used as a rendering target as specified by the ARB_framebuffer_object extension.
More...
#include <FramebufferObject.hpp>
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 |
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.
ARB_framebuffer_object specifications http://www.opengl.org/registry/specs/ARB/framebuffer_object.txtDefinition at line 503 of file FramebufferObject.hpp.
| vl::FBORenderTarget::~FBORenderTarget | ( | ) | [inline] |
Destructor.
Definition at line 523 of file FramebufferObject.hpp.
| void FBORenderTarget::create | ( | ) |
Creates a framebuffer object by calling glGenFramebuffers().
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 | ( | ) |
Deletes a framebuffer object by calling glDeleteFramebuffers().
Definition at line 85 of file FramebufferObject.cpp.
References handle(), vl::OpenGLContext::makeCurrent(), mHandle, vl::RenderTarget::openglContext(), removeAllAttachments(), vl::RenderTarget::setHeight(), vl::RenderTarget::setWidth(), VL_CHECK, and VL_CHECK_OGL.
| 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] |
Makes the framebuffer the current rendering target calling glBindFramebuffer( GL_FRAMEBUFFER, FBORenderTarget::handle() ) and initializes all the previously defined attachment points.
Reimplemented from vl::RenderTarget.
Definition at line 102 of file FramebufferObject.cpp.
References vl::RenderTarget::bindDrawBuffers(), vl::RenderTarget::bindReadBuffer(), vl::Log::error(), vl::FBB_DRAW_FRAMEBUFFER, vl::FBB_FRAMEBUFFER, vl::FBB_READ_FRAMEBUFFER, handle(), vl::Has_FBO, vl::RenderTarget::height(), vl::OpenGLContext::makeCurrent(), mFBOAttachments, vl::RenderTarget::openglContext(), printFramebufferError(), VL_CHECK, VL_CHECK_OGL, VL_TRAP, and vl::RenderTarget::width().
| 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 | ||
| ) |
Binds a color attachment to a framebuffer object.
Definition at line 239 of file FramebufferObject.cpp.
References vl::AP_COLOR_ATTACHMENT0, vl::AP_COLOR_ATTACHMENT15, vl::FBORenderbufferAttachment::bindAttachment(), vl::Has_FBO, mFBOAttachments, vl::FBOAbstractAttachment::mFBORenderTargets, removeAttachment(), and VL_CHECK.
| void FBORenderTarget::addTextureAttachment | ( | EAttachmentPoint | attach_point, |
| FBOAbstractTextureAttachment * | attachment | ||
| ) |
Binds a texture attachment to a framebuffer object.
Definition at line 251 of file FramebufferObject.cpp.
References vl::AP_COLOR_ATTACHMENT0, vl::AP_COLOR_ATTACHMENT15, vl::FBOAbstractAttachment::bindAttachment(), vl::Has_FBO, mFBOAttachments, vl::FBOAbstractAttachment::mFBORenderTargets, removeAttachment(), and VL_CHECK.
| 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 ) |
Binds a depth-stencil attachment to a framebuffer object.
Definition at line 285 of file FramebufferObject.cpp.
References vl::AP_DEPTH_STENCIL_ATTACHMENT, vl::FBOAbstractAttachment::bindAttachment(), vl::Has_FBO, mFBOAttachments, vl::FBOAbstractAttachment::mFBORenderTargets, removeAttachment(), and VL_CHECK.
| 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 ) |
Unbinds the attachment associated to the given attachment point from a framebuffer object.
Definition at line 313 of file FramebufferObject.cpp.
References handle(), vl::Has_FBO, vl::VisualizationLibrary::isGraphicsInitialized(), vl::OpenGLContext::makeCurrent(), mFBOAttachments, vl::FBOAbstractAttachment::mFBORenderTargets, vl::RenderTarget::openglContext(), VL_CHECK, and VL_CHECK_OGL.
| 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.
friend class OpenGLContext [friend] |
Reimplemented from vl::RenderTarget.
Definition at line 507 of file FramebufferObject.hpp.
Definition at line 590 of file FramebufferObject.hpp.
Referenced by addColorAttachment(), addDepthAttachment(), addDepthStencilAttachment(), addStencilAttachment(), addTextureAttachment(), bindFramebuffer(), checkFramebufferStatus(), removeAllAttachments(), and removeAttachment().
| GLuint vl::FBORenderTarget::mHandle |
Definition at line 591 of file FramebufferObject.hpp.