From 652d9fa921d6e7917924f8201a4dbd70cea2e255 Mon Sep 17 00:00:00 2001 From: Rakarake Date: Mon, 8 Dec 2025 20:05:54 +0100 Subject: [PATCH] file reading --- fragment.glsl | 10 ++++++++-- main.c | 29 +++++++++++++++++------------ 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/fragment.glsl b/fragment.glsl index 59aa912..b287515 100644 --- a/fragment.glsl +++ b/fragment.glsl @@ -1,3 +1,9 @@ -void main() { - gl_FragColor = vec4(1.0,0.0,1.0,1.0); +#version 330 core +out vec4 FragColor; +in vec2 uv; +uniform vec2 WindowSize; + +void main() +{ + FragColor = vec4(gl_FragCoord.xy / WindowSize, 0.0, 1.0); } diff --git a/main.c b/main.c index 0a3bc71..60e633e 100644 --- a/main.c +++ b/main.c @@ -1,6 +1,7 @@ #define GL_GLEXT_PROTOTYPES #include +#include #include #include @@ -11,17 +12,6 @@ void checkGlError() { } } -const char *fragment_shader_source = -"#version 330 core\n" -"out vec4 FragColor;\n" -"in vec2 uv;\n" -"uniform vec2 WindowSize;\n" -"\n" -"void main()\n" -"{\n" -" FragColor = vec4(gl_FragCoord.xy / WindowSize, 0.0, 1.0);\n" -"}\n"; - GLuint compile_shader(GLuint type, const char *src) { GLuint id = glCreateShader(GL_FRAGMENT_SHADER); glShaderSource(id, 1, &src, 0); @@ -55,6 +45,21 @@ GLuint create_shader(const char *fragment_src) { return program; } +GLuint load_shader(const char *path) { + FILE *handle = fopen(path, "r"); + fseek(handle, 0L, SEEK_END); + long length = ftell(handle); + fseek(handle, 0L, SEEK_SET); + char *string = malloc(length * sizeof(char)); + fread(string, sizeof(char), length, handle); + fclose(handle); + + GLuint shader = create_shader(string); + + free(string); + return shader; +} + int main() { printf("Good Morning 🍵\n"); SDL_Init(SDL_INIT_VIDEO); @@ -79,7 +84,7 @@ int main() { int running = 1; float angle = 0.0; - GLuint shader = create_shader(fragment_shader_source); + GLuint shader = load_shader("fragment.glsl"); //create_shader(fragment_shader_source); glUseProgram(shader); int w, h;