diff options
author | Erik Reider <[email protected]> | 2024-01-02 01:15:34 +0100 |
---|---|---|
committer | Erik Reider <[email protected]> | 2024-01-03 23:49:04 +0100 |
commit | 1a6918f948be034e65c50af8969d090b5e762dc1 (patch) | |
tree | d84116dac67ee8b649534b86c01851fc2956c3b7 /render/fx_renderer/fx_stencilbuffer.c | |
parent | 51c7078b9ec413ebd8316501f01ccf769a090f64 (diff) |
Integrated the stencil rb into fx_framebuffer
Every fx_framebuffer will now have a stencil buffer
Diffstat (limited to 'render/fx_renderer/fx_stencilbuffer.c')
-rw-r--r-- | render/fx_renderer/fx_stencilbuffer.c | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/render/fx_renderer/fx_stencilbuffer.c b/render/fx_renderer/fx_stencilbuffer.c deleted file mode 100644 index 4f57216..0000000 --- a/render/fx_renderer/fx_stencilbuffer.c +++ /dev/null @@ -1,50 +0,0 @@ -#include <assert.h> -#include <wlr/render/gles2.h> -#include <wlr/util/log.h> - -#include "include/render/fx_renderer/fx_stencilbuffer.h" - -struct fx_stencilbuffer fx_stencilbuffer_create(void) { - return (struct fx_stencilbuffer) { - .rb = -1, - .width = -1, - .height = -1, - }; -} - -void fx_stencilbuffer_init(struct fx_stencilbuffer *stencil_buffer, int width, int height) { - bool first_alloc = false; - - if (stencil_buffer->rb == (uint32_t) -1) { - glGenRenderbuffers(1, &stencil_buffer->rb); - first_alloc = true; - } - - if (first_alloc || stencil_buffer->width != width || stencil_buffer->height != height) { - glBindRenderbuffer(GL_RENDERBUFFER, stencil_buffer->rb); - glRenderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX8, width, height); - stencil_buffer->width = width; - stencil_buffer->height = height; - - GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); - if (status != GL_FRAMEBUFFER_COMPLETE) { - wlr_log(WLR_ERROR, - "Stencil buffer incomplete, couldn't create! (FB status: %i)", - status); - return; - } - } - - // Reattach the RenderBuffer to the FrameBuffer - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, - GL_RENDERBUFFER, stencil_buffer->rb); -} - -void fx_stencilbuffer_release(struct fx_stencilbuffer *stencil_buffer) { - if (stencil_buffer->rb != (uint32_t) -1 && stencil_buffer->rb) { - glDeleteRenderbuffers(1, &stencil_buffer->rb); - } - stencil_buffer->rb = -1; - stencil_buffer->width = -1; - stencil_buffer->height = -1; -} |