#pragma once #include "typedefs.hpp" #include "commons.hpp" #include class Texture; class Framebuffer : public Bindable { uint fbo; uint depth; uint width; uint height; std::shared_ptr texture; public: Framebuffer(uint fbo, uint depth, std::unique_ptr texture); Framebuffer(uint width, uint height, bool alpha=false); ~Framebuffer(); void setTexture(std::unique_ptr texture); /// @brief Use framebuffer void bind() const override; /// @brief Stop using framebuffer void unbind() const override; /// @brief Update framebuffer texture size /// @param width new width /// @param height new height void resize(uint width, uint height); /// @brief Get framebuffer color attachment Texture* getTexture() const; std::shared_ptr getSharedTexture() const; /// @brief Get framebuffer width uint getWidth() const; /// @brief Get framebuffer height uint getHeight() const; uint getFBO() const; };