summaryrefslogtreecommitdiff
path: root/gfx/src/core/renderbuffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/src/core/renderbuffer.c')
-rw-r--r--gfx/src/core/renderbuffer.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/gfx/src/core/renderbuffer.c b/gfx/src/core/renderbuffer.c
new file mode 100644
index 0000000..2753f3b
--- /dev/null
+++ b/gfx/src/core/renderbuffer.c
@@ -0,0 +1,35 @@
1#include "renderbuffer.h"
2
3#include "texture.h"
4
5#include <error.h>
6
7bool gfx_init_renderbuffer(
8 RenderBuffer* renderbuffer, const RenderBufferDesc* desc) {
9 assert(renderbuffer);
10 assert(desc);
11
12 glGenRenderbuffers(1, &renderbuffer->id);
13 if (!renderbuffer->id) {
14 log_error("glGenRenderbuffers failed");
15 return false;
16 }
17
18 glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer->id);
19 glRenderbufferStorage(
20 GL_RENDERBUFFER, to_GL_internal_format(desc->texture_format), desc->width,
21 desc->height);
22 glBindRenderbuffer(GL_RENDERBUFFER, 0);
23
24 ASSERT_GL;
25 return true;
26}
27
28void gfx_del_renderbuffer(RenderBuffer* renderbuffer) {
29 assert(renderbuffer);
30
31 if (renderbuffer->id) {
32 glDeleteRenderbuffers(1, &renderbuffer->id);
33 renderbuffer->id = 0;
34 }
35}