From 420845fd87b48be57ded024106c3625792dfd0fc Mon Sep 17 00:00:00 2001 From: Warwick Date: Wed, 25 Jun 2025 16:19:07 +0100 Subject: [PATCH] Loaded in shader source code from file --- shaders/frag.glsl | 7 +++++++ shaders/vert.glsl | 8 ++++++++ src/main.c | 24 ++++++++---------------- 3 files changed, 23 insertions(+), 16 deletions(-) create mode 100644 shaders/frag.glsl create mode 100644 shaders/vert.glsl diff --git a/shaders/frag.glsl b/shaders/frag.glsl new file mode 100644 index 0000000..c5d504b --- /dev/null +++ b/shaders/frag.glsl @@ -0,0 +1,7 @@ +#version 330 core +out vec4 FragColor; + +void main() +{ + FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f); +} diff --git a/shaders/vert.glsl b/shaders/vert.glsl new file mode 100644 index 0000000..2242931 --- /dev/null +++ b/shaders/vert.glsl @@ -0,0 +1,8 @@ +#version 330 core +layout (location = 0) in vec3 aPos; + +void main() +{ + gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0); +} + diff --git a/src/main.c b/src/main.c index 337e954..5e2147c 100644 --- a/src/main.c +++ b/src/main.c @@ -9,26 +9,15 @@ const unsigned int SCR_WIDTH = 800; const unsigned int SCR_HEIGHT = 600; -const char *vertexShaderSource = - "#version 330 core\n" - "layout (location = 0) in vec3 aPos;\n" - "void main()\n" - "{\n" - " gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n" - "}\0"; -const char *fragmentShaderSource = - "#version 330 core\n" - "out vec4 FragColor;\n" - "void main()\n" - "{\n" - " FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);\n" - "}\n\0"; - int main(int argc, char *argv[]) { SDL_Window *window; SDL_Renderer *renderer; + SDL_GLContext glcontext; SDL_Event event; + const char *vertexShaderSource = SDL_LoadFile("shaders/vert.glsl", NULL); + const char *fragmentShaderSource = SDL_LoadFile("shaders/frag.glsl", NULL); + if (!SDL_Init(SDL_INIT_VIDEO)) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s", SDL_GetError()); @@ -47,7 +36,7 @@ int main(int argc, char *argv[]) { SDL_GetError()); return EXIT_FAILURE; } - SDL_GLContext glcontext = SDL_GL_CreateContext(window); + glcontext = SDL_GL_CreateContext(window); if (!glcontext) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create OpenGL Context: %s", SDL_GetError()); @@ -89,6 +78,9 @@ int main(int argc, char *argv[]) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to compile fragment shader: %s", infoLog); } + // Free source code memory + SDL_free((void *)vertexShaderSource); + SDL_free((void *)fragmentShaderSource); // link shaders unsigned int shaderProgram = glCreateProgram(); glAttachShader(shaderProgram, vertexShader);