globjects
2.0.0.690708773bba
Strict OpenGL objects wrapper.
|
Enables creation of arbitrary render targets that are not directly drawn on the screen. More...
#include <globjects/include/globjects/Framebuffer.h>
Public Types | |
enum | BindlessImplementation { BindlessImplementation::DirectStateAccessARB, BindlessImplementation::DirectStateAccessEXT, BindlessImplementation::Legacy } |
Public Types inherited from globjects::Object | |
enum | NameImplementation { NameImplementation::DebugKHR, NameImplementation::Legacy } |
Public Member Functions | |
Framebuffer () | |
virtual | ~Framebuffer () |
virtual void | accept (ObjectVisitor &visitor) override |
void | bind () const |
void | bind (gl::GLenum target) const |
void | setParameter (gl::GLenum pname, gl::GLint param) |
gl::GLint | getAttachmentParameter (gl::GLenum attachment, gl::GLenum pname) const |
void | attachTexture (gl::GLenum attachment, Texture *texture, gl::GLint level=0) |
void | attachTextureLayer (gl::GLenum attachment, Texture *texture, gl::GLint level=0, gl::GLint layer=0) |
void | attachRenderBuffer (gl::GLenum attachment, Renderbuffer *renderBuffer) |
bool | detach (gl::GLenum attachment) |
void | setReadBuffer (gl::GLenum mode) const |
void | setDrawBuffer (gl::GLenum mode) const |
void | setDrawBuffers (gl::GLsizei n, const gl::GLenum *modes) const |
void | setDrawBuffers (const std::vector< gl::GLenum > &modes) const |
void | clear (gl::ClearBufferMask mask) |
void | clearBuffer (gl::GLenum buffer, gl::GLint drawBuffer, const gl::GLint *value) |
void | clearBuffer (gl::GLenum buffer, gl::GLint drawBuffer, const gl::GLuint *value) |
void | clearBuffer (gl::GLenum buffer, gl::GLint drawBuffer, const gl::GLfloat *value) |
void | clearBuffer (gl::GLenum buffer, gl::GLfloat depth, gl::GLint stencil, gl::GLint drawBuffer=0) |
void | clearBuffer (gl::GLenum buffer, gl::GLint drawBuffer, const glm::ivec4 &value) |
void | clearBuffer (gl::GLenum buffer, gl::GLint drawBuffer, const glm::uvec4 &value) |
void | clearBuffer (gl::GLenum buffer, gl::GLint drawBuffer, const glm::vec4 &value) |
void | readPixels (gl::GLint x, gl::GLint y, gl::GLsizei width, gl::GLsizei height, gl::GLenum format, gl::GLenum type, gl::GLvoid *data=nullptr) const |
void | readPixels (const std::array< gl::GLint, 4 > &rect, gl::GLenum format, gl::GLenum type, gl::GLvoid *data=nullptr) const |
void | readPixels (gl::GLenum readBuffer, const std::array< gl::GLint, 4 > &rect, gl::GLenum format, gl::GLenum type, gl::GLvoid *data=nullptr) const |
std::vector< unsigned char > | readPixelsToByteArray (const std::array< gl::GLint, 4 > &rect, gl::GLenum format, gl::GLenum type) const |
std::vector< unsigned char > | readPixelsToByteArray (gl::GLenum readBuffer, const std::array< gl::GLint, 4 > &rect, gl::GLenum format, gl::GLenum type) const |
void | readPixelsToBuffer (const std::array< gl::GLint, 4 > &rect, gl::GLenum format, gl::GLenum type, Buffer *pbo) const |
gl::GLenum | checkStatus () const |
std::string | statusString () const |
void | printStatus (bool onlyErrors=false) const |
FramebufferAttachment * | getAttachment (gl::GLenum attachment) |
std::vector< FramebufferAttachment * > | attachments () |
void | blit (gl::GLenum readBuffer, const std::array< gl::GLint, 4 > &srcRect, Framebuffer *destFbo, gl::GLenum drawBuffer, const std::array< gl::GLint, 4 > &destRect, gl::ClearBufferMask mask, gl::GLenum filter) const |
void | blit (gl::GLenum readBuffer, const std::array< gl::GLint, 4 > &srcRect, Framebuffer *destFbo, const std::vector< gl::GLenum > &drawBuffers, const std::array< gl::GLint, 4 > &destRect, gl::ClearBufferMask mask, gl::GLenum filter) const |
virtual gl::GLenum | objectType () const override |
Public Member Functions inherited from globjects::Object | |
gl::GLuint | id () const |
std::string | name () const |
void | setName (const std::string &name) |
bool | hasName () const |
bool | isDefault () const |
void | detach () |
Static Public Member Functions | |
static void | hintBindlessImplementation (BindlessImplementation impl) |
static std::unique_ptr< Framebuffer > | fromId (gl::GLuint id) |
static std::unique_ptr< Framebuffer > | defaultFBO () |
static void | unbind () |
static void | unbind (gl::GLenum target) |
static void | colorMask (gl::GLboolean red, gl::GLboolean green, gl::GLboolean blue, gl::GLboolean alpha) |
static void | colorMask (const glm::bvec4 &mask) |
static void | colorMaski (gl::GLuint buffer, gl::GLboolean red, gl::GLboolean green, gl::GLboolean blue, gl::GLboolean alpha) |
static void | colorMaski (gl::GLuint buffer, const glm::bvec4 &mask) |
static void | clearColor (gl::GLfloat red, gl::GLfloat green, gl::GLfloat blue, gl::GLfloat alpha) |
static void | clearColor (const glm::vec4 &color) |
static void | clearDepth (gl::GLdouble depth) |
Static Public Member Functions inherited from globjects::Object | |
static void | hintNameImplementation (NameImplementation impl) |
Static Public Member Functions inherited from globjects::Instantiator< Framebuffer > | |
static std::unique_ptr< Framebuffer > | create (Args &&...args) |
static std::unique_ptr< Framebuffer > | fromId (gl::GLuint id, Args &&...args) |
Protected Member Functions | |
Framebuffer (std::unique_ptr< IDResource > &&resource) | |
void | addAttachment (std::unique_ptr< FramebufferAttachment > &&attachment) |
Protected Member Functions inherited from globjects::Object | |
Object (std::unique_ptr< IDResource > &&resource) | |
virtual | ~Object () |
Protected Attributes | |
std::map< gl::GLenum, std::unique_ptr< FramebufferAttachment > > | m_attachments |
Protected Attributes inherited from globjects::Object | |
std::unique_ptr< IDResource > | m_resource |
void * | m_objectLabelState |
Enables creation of arbitrary render targets that are not directly drawn on the screen.
Different attachments can be added with attachTexture(), attachTexture1D(), attachTexture2D, attachTextureLayer() and attachRenderBuffer() and queried using attachment() and attachments().
To access the default FBO (e.g. if you want to blit an FBO to it), call defaultFBO(). To blit between two FBOs, prepare them with setReadBuffer() and setDrawBuffer() and blit with blit().
Draw restrictions can be done with setDrawBuffers(). To read pixels from an FBO direct into RAM, use readPixels() and to read into an OpenGL buffer use readPixelsToBuffer(). To check if an FBO is setup correctly, the status can be checked using checkStatus(), statusString() and printStatus().
|
strong |
globjects::Framebuffer::Framebuffer | ( | ) |
|
virtual |
|
protected |
|
static |
|
static |
|
static |
|
overridevirtual |
Implements globjects::Object.
void globjects::Framebuffer::bind | ( | ) | const |
uses GL_FRAMEBUFFER as target
void globjects::Framebuffer::bind | ( | gl::GLenum | target | ) | const |
|
static |
uses GL_FRAMEBUFFER as target
|
static |
void globjects::Framebuffer::setParameter | ( | gl::GLenum | pname, |
gl::GLint | param | ||
) |
gl::GLint globjects::Framebuffer::getAttachmentParameter | ( | gl::GLenum | attachment, |
gl::GLenum | pname | ||
) | const |
void globjects::Framebuffer::attachTexture | ( | gl::GLenum | attachment, |
Texture * | texture, | ||
gl::GLint | level = 0 |
||
) |
void globjects::Framebuffer::attachTextureLayer | ( | gl::GLenum | attachment, |
Texture * | texture, | ||
gl::GLint | level = 0 , |
||
gl::GLint | layer = 0 |
||
) |
void globjects::Framebuffer::attachRenderBuffer | ( | gl::GLenum | attachment, |
Renderbuffer * | renderBuffer | ||
) |
bool globjects::Framebuffer::detach | ( | gl::GLenum | attachment | ) |
void globjects::Framebuffer::setReadBuffer | ( | gl::GLenum | mode | ) | const |
void globjects::Framebuffer::setDrawBuffer | ( | gl::GLenum | mode | ) | const |
void globjects::Framebuffer::setDrawBuffers | ( | gl::GLsizei | n, |
const gl::GLenum * | modes | ||
) | const |
void globjects::Framebuffer::setDrawBuffers | ( | const std::vector< gl::GLenum > & | modes | ) | const |
void globjects::Framebuffer::clear | ( | gl::ClearBufferMask | mask | ) |
void globjects::Framebuffer::clearBuffer | ( | gl::GLenum | buffer, |
gl::GLint | drawBuffer, | ||
const gl::GLint * | value | ||
) |
void globjects::Framebuffer::clearBuffer | ( | gl::GLenum | buffer, |
gl::GLint | drawBuffer, | ||
const gl::GLuint * | value | ||
) |
void globjects::Framebuffer::clearBuffer | ( | gl::GLenum | buffer, |
gl::GLint | drawBuffer, | ||
const gl::GLfloat * | value | ||
) |
void globjects::Framebuffer::clearBuffer | ( | gl::GLenum | buffer, |
gl::GLfloat | depth, | ||
gl::GLint | stencil, | ||
gl::GLint | drawBuffer = 0 |
||
) |
void globjects::Framebuffer::clearBuffer | ( | gl::GLenum | buffer, |
gl::GLint | drawBuffer, | ||
const glm::ivec4 & | value | ||
) |
void globjects::Framebuffer::clearBuffer | ( | gl::GLenum | buffer, |
gl::GLint | drawBuffer, | ||
const glm::uvec4 & | value | ||
) |
void globjects::Framebuffer::clearBuffer | ( | gl::GLenum | buffer, |
gl::GLint | drawBuffer, | ||
const glm::vec4 & | value | ||
) |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
void globjects::Framebuffer::readPixels | ( | gl::GLint | x, |
gl::GLint | y, | ||
gl::GLsizei | width, | ||
gl::GLsizei | height, | ||
gl::GLenum | format, | ||
gl::GLenum | type, | ||
gl::GLvoid * | data = nullptr |
||
) | const |
void globjects::Framebuffer::readPixels | ( | const std::array< gl::GLint, 4 > & | rect, |
gl::GLenum | format, | ||
gl::GLenum | type, | ||
gl::GLvoid * | data = nullptr |
||
) | const |
void globjects::Framebuffer::readPixels | ( | gl::GLenum | readBuffer, |
const std::array< gl::GLint, 4 > & | rect, | ||
gl::GLenum | format, | ||
gl::GLenum | type, | ||
gl::GLvoid * | data = nullptr |
||
) | const |
std::vector<unsigned char> globjects::Framebuffer::readPixelsToByteArray | ( | const std::array< gl::GLint, 4 > & | rect, |
gl::GLenum | format, | ||
gl::GLenum | type | ||
) | const |
std::vector<unsigned char> globjects::Framebuffer::readPixelsToByteArray | ( | gl::GLenum | readBuffer, |
const std::array< gl::GLint, 4 > & | rect, | ||
gl::GLenum | format, | ||
gl::GLenum | type | ||
) | const |
void globjects::Framebuffer::readPixelsToBuffer | ( | const std::array< gl::GLint, 4 > & | rect, |
gl::GLenum | format, | ||
gl::GLenum | type, | ||
Buffer * | pbo | ||
) | const |
gl::GLenum globjects::Framebuffer::checkStatus | ( | ) | const |
std::string globjects::Framebuffer::statusString | ( | ) | const |
void globjects::Framebuffer::printStatus | ( | bool | onlyErrors = false | ) | const |
FramebufferAttachment* globjects::Framebuffer::getAttachment | ( | gl::GLenum | attachment | ) |
std::vector<FramebufferAttachment*> globjects::Framebuffer::attachments | ( | ) |
void globjects::Framebuffer::blit | ( | gl::GLenum | readBuffer, |
const std::array< gl::GLint, 4 > & | srcRect, | ||
Framebuffer * | destFbo, | ||
gl::GLenum | drawBuffer, | ||
const std::array< gl::GLint, 4 > & | destRect, | ||
gl::ClearBufferMask | mask, | ||
gl::GLenum | filter | ||
) | const |
void globjects::Framebuffer::blit | ( | gl::GLenum | readBuffer, |
const std::array< gl::GLint, 4 > & | srcRect, | ||
Framebuffer * | destFbo, | ||
const std::vector< gl::GLenum > & | drawBuffers, | ||
const std::array< gl::GLint, 4 > & | destRect, | ||
gl::ClearBufferMask | mask, | ||
gl::GLenum | filter | ||
) | const |
|
overridevirtual |
Implements globjects::Object.
|
protected |
|
protected |