summaryrefslogtreecommitdiff
path: root/gfx/gl/glFramebuffer.h
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2026-03-10 01:51:38 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2026-03-10 01:51:38 +0000
commit78b4b043a4fe6be84dd36717c832951a0a464f63 (patch)
treebc82ca1c59d309491323779ebbe3195b4479b546 /gfx/gl/glFramebuffer.h
parentSwitch to floating point, camera relative position buffer (diff)
downloadilt-78b4b043a4fe6be84dd36717c832951a0a464f63.tar.bz2
ilt-78b4b043a4fe6be84dd36717c832951a0a464f63.tar.xz
ilt-78b4b043a4fe6be84dd36717c832951a0a464f63.zip
Switch frame and render buffer to DSA helpersHEADmain
Diffstat (limited to 'gfx/gl/glFramebuffer.h')
-rw-r--r--gfx/gl/glFramebuffer.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/gfx/gl/glFramebuffer.h b/gfx/gl/glFramebuffer.h
new file mode 100644
index 0000000..0a4ec5a
--- /dev/null
+++ b/gfx/gl/glFramebuffer.h
@@ -0,0 +1,40 @@
+#pragma once
+
+#include "config/types.h"
+#include "glArrays.h"
+#include "glTexture.h"
+
+namespace Impl {
+ struct glRenderbuffer : Detail::glNamed {
+ void storage(GLenum iformat, ImageDimensions);
+ };
+
+ struct glFramebuffer : Detail::glNamed {
+ template<GLenum Target>
+ void
+ texture(GLenum attachment, const glTexture<Target> & texture)
+ {
+ glNamedFramebufferTexture(name, attachment, texture, 0);
+ }
+
+ void drawBuffers(std::span<const GLenum> buffers);
+
+ template<std::convertible_to<GLenum>... Buffers>
+ void
+ drawBuffers(Buffers... buffers)
+ {
+ drawBuffers(std::array {static_cast<GLenum>(buffers)...});
+ }
+
+ void buffer(GLenum attachment, const glRenderbuffer &);
+ void assertComplete() const;
+ };
+}
+
+template<size_t N>
+using glFramebuffers = glManagedArray<Impl::glFramebuffer, N, &glCreateFramebuffers, &glDeleteFramebuffers>;
+using glFramebuffer = glManagedSingle<Impl::glFramebuffer, &glCreateFramebuffers, &glDeleteFramebuffers>;
+
+template<size_t N>
+using glRenderbuffers = glManagedArray<Impl::glRenderbuffer, N, &glCreateRenderbuffers, &glDeleteRenderbuffers>;
+using glRenderbuffer = glManagedSingle<Impl::glRenderbuffer, &glCreateRenderbuffers, &glDeleteRenderbuffers>;