13#include <globjects/globjects_api.h>
18#ifdef GLOBJECTS_USE_EIGEN
27class FramebufferAttachment;
71 static std::unique_ptr<Framebuffer>
fromId(gl::GLuint
id);
78 void bind(gl::GLenum target)
const;
83 static void unbind(gl::GLenum target);
99 void clear(gl::ClearBufferMask mask);
101 void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer,
const gl::GLint * value);
102 void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer,
const gl::GLuint * value);
103 void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer,
const gl::GLfloat * value);
104 void clearBuffer(gl::GLenum buffer, gl::GLfloat depth, gl::GLint stencil, gl::GLint drawBuffer = 0);
106 void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer,
const glm::ivec4 & value);
107 void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer,
const glm::uvec4 & value);
108 void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer,
const glm::vec4 & value);
109 void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer,
int value);
110 void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer,
float value);
112#ifdef GLOBJECTS_USE_EIGEN
113 void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer,
const Eigen::Vector4i & value);
114 void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer,
const Eigen::Matrix<unsigned, 4, 1> & value);
115 void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer,
const Eigen::Vector4f & value);
118 static void colorMask(gl::GLboolean red, gl::GLboolean green, gl::GLboolean blue, gl::GLboolean alpha);
120 static void colorMaski(gl::GLuint buffer, gl::GLboolean red, gl::GLboolean green, gl::GLboolean blue, gl::GLboolean alpha);
121 static void colorMaski(gl::GLuint buffer,
const glm::bvec4 & mask);
122 static void clearColor(gl::GLfloat red, gl::GLfloat green, gl::GLfloat blue, gl::GLfloat alpha);
126 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;
127 void readPixels(
const std::array<gl::GLint, 4> & rect, gl::GLenum format, gl::GLenum type, gl::GLvoid * data =
nullptr)
const;
128 void readPixels(gl::GLenum readBuffer,
const std::array<gl::GLint, 4> & rect, gl::GLenum format, gl::GLenum type, gl::GLvoid * data =
nullptr)
const;
129 std::vector<unsigned char>
readPixelsToByteArray(
const std::array<gl::GLint, 4> & rect, gl::GLenum format, gl::GLenum type)
const;
130 std::vector<unsigned char>
readPixelsToByteArray(gl::GLenum readBuffer,
const std::array<gl::GLint, 4> & rect, gl::GLenum format, gl::GLenum type)
const;
140 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;
141 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;
Wrapper for OpenGL buffer objects.
Definition Buffer.h:38
Wraps attachments to a FrameBufferObject.
Definition FramebufferAttachment.h:30
Enables creation of arbitrary render targets that are not directly drawn on the screen.
Definition Framebuffer.h:54
std::vector< unsigned char > readPixelsToByteArray(gl::GLenum readBuffer, const std::array< gl::GLint, 4 > &rect, gl::GLenum format, gl::GLenum type) const
BindlessImplementation
Definition Framebuffer.h:57
gl::GLint getAttachmentParameter(gl::GLenum attachment, gl::GLenum pname) const
std::vector< unsigned char > readPixelsToByteArray(const std::array< gl::GLint, 4 > &rect, gl::GLenum format, gl::GLenum type) const
static std::unique_ptr< Framebuffer > fromId(gl::GLuint id)
std::map< gl::GLenum, std::unique_ptr< FramebufferAttachment > > m_attachments
Definition Framebuffer.h:153
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 readPixels(const std::array< gl::GLint, 4 > &rect, gl::GLenum format, gl::GLenum type, gl::GLvoid *data=nullptr) const
void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer, int value)
static void clearDepth(gl::GLdouble depth)
void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer, const gl::GLfloat *value)
void setDrawBuffers(gl::GLsizei n, const gl::GLenum *modes) const
static void colorMask(gl::GLboolean red, gl::GLboolean green, gl::GLboolean blue, gl::GLboolean alpha)
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 clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer, float value)
void setDrawBuffer(gl::GLenum mode) const
void readPixelsToBuffer(const std::array< gl::GLint, 4 > &rect, gl::GLenum format, gl::GLenum type, Buffer *pbo) const
void attachTextureLayer(gl::GLenum attachment, Texture *texture, gl::GLint level=0, gl::GLint layer=0)
static void colorMaski(gl::GLuint buffer, gl::GLboolean red, gl::GLboolean green, gl::GLboolean blue, gl::GLboolean alpha)
static void clearColor(gl::GLfloat red, gl::GLfloat green, gl::GLfloat blue, gl::GLfloat alpha)
void attachTexture(gl::GLenum attachment, Texture *texture, gl::GLint level=0)
gl::GLenum checkStatus() const
void setParameter(gl::GLenum pname, gl::GLint param)
Framebuffer(std::unique_ptr< IDResource > &&resource)
static void unbind(gl::GLenum target)
bool detach(gl::GLenum attachment)
void attachRenderBuffer(gl::GLenum attachment, Renderbuffer *renderBuffer)
virtual gl::GLenum objectType() const override
static void hintBindlessImplementation(BindlessImplementation impl)
void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer, const glm::ivec4 &value)
void setDrawBuffers(const std::vector< gl::GLenum > &modes) const
static void clearColor(const glm::vec4 &color)
std::string statusString() const
FramebufferAttachment * getAttachment(gl::GLenum attachment)
std::vector< FramebufferAttachment * > attachments()
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
void printStatus(bool onlyErrors=false) const
void addAttachment(std::unique_ptr< FramebufferAttachment > &&attachment)
void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer, const gl::GLint *value)
void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer, const glm::uvec4 &value)
static void colorMaski(gl::GLuint buffer, const glm::bvec4 &mask)
void setReadBuffer(gl::GLenum mode) const
void clearBuffer(gl::GLenum buffer, gl::GLfloat depth, gl::GLint stencil, gl::GLint drawBuffer=0)
static void colorMask(const glm::bvec4 &mask)
void clear(gl::ClearBufferMask mask)
void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer, const glm::vec4 &value)
void readPixels(gl::GLenum readBuffer, const std::array< gl::GLint, 4 > &rect, gl::GLenum format, gl::GLenum type, gl::GLvoid *data=nullptr) const
static std::unique_ptr< Framebuffer > defaultFBO()
void bind(gl::GLenum target) const
void clearBuffer(gl::GLenum buffer, gl::GLint drawBuffer, const gl::GLuint *value)
CRTP for creating objects similar to std::make_unique.
Definition Instantiator.h:22
Superclass of all wrapped OpenGL objects.
Definition Object.h:28
Encapsulates OpenGL render buffer objects.
Definition Renderbuffer.h:21
Wraps OpenGL texture objects. A Texture provides both interfaces to bind them for the OpenGL pipeline...
Definition Texture.h:35
Contains all the classes that wrap OpenGL functionality.