From 81096a9b5f04624695ca80f15d2a4b79f51b267d Mon Sep 17 00:00:00 2001 From: Nigel Date: Wed, 14 Jan 2026 14:00:09 +0100 Subject: [PATCH] Fix shader errs --- .gitignore | 4 +- build/fragment.glsl | 9 ++ build/shader.f | 6 -- build/{shader.v => vertex.glsl} | 8 +- src/main.c | 143 +++++++++++++++----------------- 5 files changed, 84 insertions(+), 86 deletions(-) create mode 100644 build/fragment.glsl delete mode 100644 build/shader.f rename build/{shader.v => vertex.glsl} (56%) diff --git a/.gitignore b/.gitignore index 8899a1f..2a024d5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -!build/shader.v -!build/shader.f +!build/vertex.glsl +!build/fragment.glsl build/ diff --git a/build/fragment.glsl b/build/fragment.glsl new file mode 100644 index 0000000..cc6130e --- /dev/null +++ b/build/fragment.glsl @@ -0,0 +1,9 @@ +#version 460 core + +out vec4 fragcolor; + +void main(){ + + fragcolor = vec4(1.0, 0.5, 0.2, 1.0); + +} diff --git a/build/shader.f b/build/shader.f deleted file mode 100644 index 7c2dc91..0000000 --- a/build/shader.f +++ /dev/null @@ -1,6 +0,0 @@ -#version 460 core -out vec4 FragColor; -void main(){ - - FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f); -} diff --git a/build/shader.v b/build/vertex.glsl similarity index 56% rename from build/shader.v rename to build/vertex.glsl index 0eb5345..9b99879 100644 --- a/build/shader.v +++ b/build/vertex.glsl @@ -1,7 +1,7 @@ #version 460 core + layout (location = 0) in vec3 aPos; + void main(){ - - gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0); - -} + gl_Position = vec4(aPos, 1.0); +}; diff --git a/src/main.c b/src/main.c index ca195f5..2fd297d 100644 --- a/src/main.c +++ b/src/main.c @@ -5,96 +5,93 @@ #include #include -void keyfunc (RGFW_window* win, RGFW_key key, u8 keychar, RGFW_keymod keymod, RGFW_bool repeat, RGFW_bool pressed){ +void keyfunc(RGFW_window *win, RGFW_key key, u8 keychar, RGFW_keymod keymod, + RGFW_bool repeat, RGFW_bool pressed) { RGFW_UNUSED(repeat); - if (key == RGFW_escape && pressed){ + if (key == RGFW_escape && pressed) { RGFW_window_setShouldClose(win, 1); } } -RGFW_window* SetupWindow(){ - RGFW_glHints* hints = RGFW_getGlobalHints_OpenGL(); - hints->major = 4; - hints->minor = 6; - RGFW_setGlobalHints_OpenGL(hints); - RGFW_window* win = RGFW_createWindow("PACMAN CLONE", 0,0, 800, 600, RGFW_windowCenter | RGFW_windowNoResize | RGFW_windowOpenGL | RGFW_windowHide); - RGFW_window_createContext_OpenGL(win, hints); - RGFW_window_show(win); - - RGFW_setKeyCallback(keyfunc); - RGFW_window_makeCurrentContext_OpenGL(win); +RGFW_window *SetupWindow() { + RGFW_glHints *hints = RGFW_getGlobalHints_OpenGL(); + hints->major = 4; + hints->minor = 6; + RGFW_setGlobalHints_OpenGL(hints); + RGFW_window *win = RGFW_createWindow("PACMAN CLONE", 0, 0, 800, 600, + RGFW_windowCenter | RGFW_windowNoResize | + RGFW_windowOpenGL | RGFW_windowHide); + RGFW_window_createContext_OpenGL(win, hints); + RGFW_window_show(win); - // Initialize GLAD - if(!gladLoadGLLoader((GLADloadproc)RGFW_getProcAddress_OpenGL)){ - printf("Failed to load GLAD!" ); - return NULL; - } - return win; + RGFW_setKeyCallback(keyfunc); + RGFW_window_makeCurrentContext_OpenGL(win); + + // Initialize GLAD + if (!gladLoadGLLoader((GLADloadproc)RGFW_getProcAddress_OpenGL)) { + printf("Failed to load GLAD!"); + return NULL; + } + return win; } -long stat_GetSize(FILE* file ) { +long stat_GetSize(FILE *file) { fseek(file, 0, SEEK_END); long size = ftell(file); fseek(file, 0, SEEK_SET); // Reset to the beginning return size; } -char* LoadFile(const char* Path) -{ - FILE* fptr; +char *LoadFile(const char *Path) { + FILE *fptr; fptr = fopen(Path, "r"); - if( !fptr ){ - printf("Failed to open file" ) ; + if (!fptr) { + printf("Failed to open file"); return NULL; } long size = stat_GetSize(fptr); - char* text = malloc(sizeof(char) * size); - fread(text , size , 1, fptr); + char *text = malloc(sizeof(char) * (size + 1)); + memset(text, 0x00, sizeof(char)*(size + 1)); + fread(text, size + 1, 1, fptr); fclose(fptr); return text; } - -uint CompileShader (const char* FilePath , GLenum ShaderType ) { - char* shdr_text = LoadFile(FilePath); +uint CompileShader(const char *FilePath, GLenum ShaderType) { + char *shdr_text = LoadFile(FilePath); + printf("%s\n" , shdr_text); uint shader = glCreateShader(ShaderType); - glShaderSource(shader, 1, (const char**)&shdr_text, NULL); + glShaderSource(shader, 1, (const char **)&shdr_text, NULL); glCompileShader(shader); int status; char info[512]; glGetShaderiv(shader, GL_COMPILE_STATUS, &status); - if(!status){ - glGetShaderInfoLog(shader,512, NULL, info); - const char* typename = ShaderType == GL_VERTEX_SHADER ? "VERTEX" : "FRAGMENT"; + if (!status) { + glGetShaderInfoLog(shader, 512, NULL, info); + const char *typename = + ShaderType == GL_VERTEX_SHADER ? "VERTEX" : "FRAGMENT"; printf("ERROR::SHADER::%s::COMPILATION %s\n", typename, info); } free(shdr_text); return shader; } - float vertices[] = { - 0.5f, 0.5f, 0.0f, - 0.5f, -0.5f, 0.0f, - -0.5f, -0.5f, 0.0f, - -0.5f, 0.5f, 0.0f, + 0.5f, 0.5f, 0.0f, 0.5f, -0.5f, 0.0f, -0.5f, -0.5f, 0.0f, -0.5f, 0.5f, 0.0f, }; -uint indices[] = { - 0,1,3, - 1,2,3 -}; +uint indices[] = {0, 1, 3, 1, 2, 3}; struct { unsigned int shaderProgram; unsigned int VAO; unsigned int EBO; unsigned int VBO; -} RenderVariables; +} RenderVariables; -void Setup(){ +void Setup() { // Load Vertex Shader - uint vert_shader = CompileShader("shader.v", GL_VERTEX_SHADER); + uint vert_shader = CompileShader("vertex.glsl", GL_VERTEX_SHADER); // Load Fragment Shader - uint frag_shader = CompileShader("shader.f", GL_FRAGMENT_SHADER); + uint frag_shader = CompileShader("fragment.glsl", GL_FRAGMENT_SHADER); RenderVariables.shaderProgram = glCreateProgram(); glAttachShader(RenderVariables.shaderProgram, vert_shader); @@ -103,52 +100,50 @@ void Setup(){ glLinkProgram(RenderVariables.shaderProgram); int success; glGetProgramiv(RenderVariables.shaderProgram, GL_LINK_STATUS, &success); - if(!success){ + if (!success) { char log[512]; glGetProgramInfoLog(RenderVariables.shaderProgram, 512, NULL, log); - printf("LINK ERROR SHADERPROGRAM", log); + printf("LINK ERROR SHADERPROGRAM", log); } glDeleteShader(vert_shader); glDeleteShader(frag_shader); - glGenVertexArrays(1,&RenderVariables.VAO); - glGenBuffers(1,&RenderVariables.VBO); - glGenBuffers(1,&RenderVariables.EBO); + glGenVertexArrays(1, &RenderVariables.VAO); + glGenBuffers(1, &RenderVariables.VBO); + glGenBuffers(1, &RenderVariables.EBO); glBindVertexArray(RenderVariables.VAO); - glBindBuffer(GL_ARRAY_BUFFER, RenderVariables.EBO); + glBindBuffer(GL_ARRAY_BUFFER, RenderVariables.VBO); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, RenderVariables.EBO); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, + GL_STATIC_DRAW); - glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE, 3* sizeof(float), (void*)0); + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void *)0); glEnableVertexAttribArray(0); - glBindBuffer(GL_ARRAY_BUFFER, 0 ); + glBindBuffer(GL_ARRAY_BUFFER, 0); glBindVertexArray(0); } -int main (int argc, char **argv){ - RGFW_window* win = SetupWindow(); - Setup(); - while ( RGFW_window_shouldClose(win) == RGFW_FALSE){ - RGFW_event event; - RGFW_pollEvents(); - - glClearColor(0.2f, 0.3f, 0.3f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); +int main(int argc, char **argv) { + RGFW_window *win = SetupWindow(); + Setup(); + while (RGFW_window_shouldClose(win) == RGFW_FALSE) { + RGFW_event event; + RGFW_pollEvents(); - glUseProgram(RenderVariables.shaderProgram); - glBindVertexArray(RenderVariables.VAO); - glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); - RGFW_window_swapBuffers_OpenGL(win); + glClearColor(0.2f, 0.3f, 0.3f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + glUseProgram(RenderVariables.shaderProgram); + glBindVertexArray(RenderVariables.VAO); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); + RGFW_window_swapBuffers_OpenGL(win); + } + RGFW_window_close(win); - } - RGFW_window_close(win); - - return 0; + return 0; } -