#pragma once #include #include #include #include namespace mbgl { namespace gfx { class RenderbufferResource { protected: RenderbufferResource() = default; public: virtual ~RenderbufferResource() = default; }; template class Renderbuffer final { public: Renderbuffer(const Size size_, std::unique_ptr resource_) : size(size_), resource(std::move(resource_)) { } void setShouldClear(bool clear) { dirty = clear; } bool needsClearing() const { return dirty; } const Size& getSize() const { return size; } template T& getResource() const { assert(resource); return static_cast(*resource); } protected: Size size; bool dirty = false; std::unique_ptr resource; }; } // namespace gfx } // namespace mbgl