summaryrefslogtreecommitdiff
path: root/src/render/Renderbuffer.hpp
blob: c33144d3e9d54cd192d44881684643b0fe214edf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#pragma once

#include "../helpers/signal/Signal.hpp"
#include "../helpers/memory/Memory.hpp"
#include "Framebuffer.hpp"
#include <aquamarine/buffer/Buffer.hpp>

class IRenderbuffer {
  public:
    IRenderbuffer(SP<Aquamarine::IBuffer> buffer, uint32_t format);
    virtual ~IRenderbuffer() = default;

    bool                    good();
    SP<IFramebuffer>        getFB();

    virtual void            bind()   = 0;
    virtual void            unbind() = 0;

    WP<Aquamarine::IBuffer> m_hlBuffer;

  protected:
    SP<IFramebuffer> m_framebuffer;
    bool             m_good = false;

    struct {
        CHyprSignalListener destroyBuffer;
    } m_listeners;
};