diff options
| author | DrNuget <drnuget@outlook.com> | 2026-01-04 22:12:24 +0200 |
|---|---|---|
| committer | DrNuget <drnuget@outlook.com> | 2026-01-04 22:12:24 +0200 |
| commit | 510f1bac9b71ba240d30bb5bc5df6501e70fafc9 (patch) | |
| tree | 7bc48763071a8c315b82e638a267411c3453dd09 /src/shader.c | |
| download | opengl-test-510f1bac9b71ba240d30bb5bc5df6501e70fafc9.tar.gz | |
Working 3D with .obj file loading
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; +} |
