summaryrefslogtreecommitdiff
path: root/src/gl.c
diff options
context:
space:
mode:
authorPhil Jones <philj56@gmail.com>2021-11-01 16:06:51 +0000
committerPhil Jones <philj56@gmail.com>2021-11-01 16:06:51 +0000
commit94fa998b7e3524ce101a977ed3516fac13461287 (patch)
tree0d4fae990021e876f7ad2deb7fbabc29a99804a4 /src/gl.c
parentf31976da251ca59ed7edb406379c12edf817711e (diff)
Add extra cleanup code to debug builds.
Also fix some memory leaks.
Diffstat (limited to 'src/gl.c')
-rw-r--r--src/gl.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/gl.c b/src/gl.c
index 74e7605..09c542e 100644
--- a/src/gl.c
+++ b/src/gl.c
@@ -141,6 +141,15 @@ void gl_initialise(struct gl *gl, struct image *texture)
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, gl->ebo);
}
+void gl_destroy(struct gl *gl)
+{
+ glDeleteProgram(gl->shader);
+ glDeleteTextures(1, &gl->texture);
+ glDeleteBuffers(1, &gl->ebo);
+ glDeleteVertexArrays(1, &gl->vao);
+ glDeleteBuffers(1, &gl->vbo);
+}
+
void gl_clear(struct gl *gl, struct color *color)
{
glClearColor(color->r, color->g, color->b, color->a);
@@ -241,6 +250,10 @@ GLuint create_shader_program(const char *vert, const char *frag)
glAttachShader(shader, vertex_shader);
glAttachShader(shader, fragment_shader);
glLinkProgram(shader);
+ glDetachShader(shader, fragment_shader);
+ glDetachShader(shader, vertex_shader);
+ glDeleteShader(fragment_shader);
+ glDeleteShader(vertex_shader);
return shader;
}