diff options
Diffstat (limited to 'src/shader.c')
| -rw-r--r-- | src/shader.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/shader.c b/src/shader.c new file mode 100644 index 0000000..022879e --- /dev/null +++ b/src/shader.c @@ -0,0 +1,39 @@ +#include "shader.h" +#include "includes.h" + +unsigned int loadShader(const char* filename, unsigned int shadertype) +{ + void* shader_source = SDL_LoadFile(filename, NULL); + unsigned int shader = glCreateShader(shadertype); + glShaderSource(shader, 1, (const char**)&shader_source, NULL); + glCompileShader(shader); + SDL_free(shader_source); + + int success; + + glGetShaderiv(shader, GL_COMPILE_STATUS, &success); + if (!success) { + printf("Couldn't compile shader\n"); + return 0; + } + + return shader; +} + +unsigned int shaderProgram(unsigned int vertex_shader, unsigned int fragment_shader) +{ + unsigned int shader_program; + shader_program = glCreateProgram(); + glAttachShader(shader_program, vertex_shader); + glAttachShader(shader_program, fragment_shader); + glLinkProgram(shader_program); + + int success; + glGetProgramiv(shader_program, GL_LINK_STATUS, &success); + if (!success) { + printf("Couldn't link shader program\n"); + return 0; + } + + return shader_program; +} |
