A specialization of BoundObjOps allows to operate on the currently bound framebuffer without the need to explicitly specify the framebuffer target in every function call.
#include
<oglplus/bound/framebuffer.hpp>
template <> class BoundObjOps<tag::Framebuffer> { private: typedef typename ObjectOps<tag::ExplicitSel, tag::Framebuffer> ExplicitOps; public: typedef typename ExplicitOps::Target Target; Target target; BoundObjOps(void); BoundObjOps(Target init_tgt); FramebufferStatus Status(void) const; bool IsComplete(void) const; const BoundObjOps& HandleIncompleteError( FramebufferStatus status ) const; const BoundObjOps& Complete(void) const; const BoundObjOps& AttachRenderbuffer( ExplicitOps::Property::Attachment attachment, RenderbufferName renderbuffer ) const; const BoundObjOps& AttachColorRenderbuffer( FramebufferColorAttachmentNumber attachment_no, RenderbufferName renderbuffer ) const; #if GL_VERSION_3_2 const BoundObjOps& AttachTexture( ExplicitOps::Property::Attachment attachment, TextureName texture, GLint level ) const; #endif const BoundObjOps& AttachColorTexture( FramebufferColorAttachmentNumber attachment_no, TextureName texture, GLint level ) const; const BoundObjOps& AttachTexture1D( ExplicitOps::Property::Attachment attachment, TextureTarget textarget, TextureName texture, GLint level ) const; const BoundObjOps& AttachTexture2D( ExplicitOps::Property::Attachment attachment, TextureTarget textarget, TextureName texture, GLint level ) const; const BoundObjOps& AttachTexture3D( ExplicitOps::Property::Attachment attachment, TextureTarget textarget, TextureName texture, GLint level, GLint layer ) const; const BoundObjOps& AttachTextureLayer( ExplicitOps::Property::Attachment attachment, TextureName texture, GLint level, GLint layer ) const; #if GL_VERSION_4_3 || GL_ARB_invalidate_subdata const BoundObjOps& Invalidate( const EnumArray< ExplicitOps::Property::Buffer > & buffers ) const; #endif #if GL_VERSION_4_3 || GL_ARB_invalidate_subdata const BoundObjOps& Invalidate( SizeType count, const ExplicitOps::Property::Buffer * buffers ) const; #endif #if GL_VERSION_4_3 || GL_ARB_invalidate_subdata const BoundObjOps& Invalidate( const EnumArray< ExplicitOps::Property::Buffer > & buffers, GLint x, GLint y, SizeType width, SizeType height ) const; #endif #if GL_VERSION_4_3 || GL_ARB_invalidate_subdata const BoundObjOps& Invalidate( SizeType count, const ExplicitOps::Property::Buffer * buffers, GLint x, GLint y, SizeType width, SizeType height ) const; #endif };