#pragma once #include "../defines.hpp" #include "../helpers/Format.hpp" #include "Texture.hpp" #include class CFramebuffer { public: CFramebuffer(); ~CFramebuffer(); bool alloc(int w, int h, uint32_t format = DRM_FORMAT_ARGB8888); void addStencil(SP tex); void bind(); void unbind(); void release(); void reset(); bool isAllocated(); SP getTexture(); SP getStencilTex(); GLuint getFBID(); void invalidate(const std::vector& attachments); Vector2D m_size; DRMFormat m_drmFormat = 0 /* DRM_FORMAT_INVALID */; private: SP m_tex; GLuint m_fb = -1; bool m_fbAllocated = false; SP m_stencilTex; friend class CRenderbuffer; };