Files
MapLibreParticleLab/include/mln/gfx/renderbuffer.hpp
Bart Louwers 2a8ebc4906 core: rename mbgl directories to mln (#4511)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-08-22 20:50:14 +02:00

47 lines
973 B
C++

#pragma once
#include <mln/gfx/types.hpp>
#include <mln/util/size.hpp>
#include <memory>
#include <cassert>
namespace mln {
namespace gfx {
class RenderbufferResource {
protected:
RenderbufferResource() = default;
public:
virtual ~RenderbufferResource() = default;
};
template <RenderbufferPixelType renderbufferType>
class Renderbuffer final {
public:
Renderbuffer(const Size size_, std::unique_ptr<RenderbufferResource> 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 <typename T = RenderbufferResource>
T& getResource() const {
assert(resource);
return static_cast<T&>(*resource);
}
protected:
Size size;
bool dirty = false;
std::unique_ptr<RenderbufferResource> resource;
};
} // namespace gfx
} // namespace mln