From 3d23c46fbdde1fabe2f24a73fe1c3392b3e7906b Mon Sep 17 00:00:00 2001 From: ktyl Date: Mon, 5 Jul 2021 08:51:55 +0100 Subject: [PATCH] fady boi --- res/shader/shader.frag | 4 +++- res/shader/shader.vert | 3 +++ src/gfx.c | 8 ++++++++ src/gfx.h | 2 +- src/main.c | 26 ++++++++++++++++++++++---- 5 files changed, 37 insertions(+), 6 deletions(-) diff --git a/res/shader/shader.frag b/res/shader/shader.frag index 0c56a32..9218613 100644 --- a/res/shader/shader.frag +++ b/res/shader/shader.frag @@ -1,7 +1,9 @@ #version 330 core out vec4 FragColor; +uniform vec4 ourColor; + void main() { - FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f); + FragColor = ourColor; } diff --git a/res/shader/shader.vert b/res/shader/shader.vert index c74ea10..27b97ea 100644 --- a/res/shader/shader.vert +++ b/res/shader/shader.vert @@ -1,7 +1,10 @@ #version 330 core layout (location = 0) in vec3 aPos; +out vec4 vertexColor; + void main() { gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0); + vertexColor = vec4(0.5, 0.0, 0.0, 1.0); } diff --git a/src/gfx.c b/src/gfx.c index eaad344..1b73a6f 100644 --- a/src/gfx.c +++ b/src/gfx.c @@ -37,6 +37,12 @@ void gfxInit() glewExperimental = GL_TRUE; glewInit(); + + // intiliased opengl + + int availableAttributes; + glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &availableAttributes); + //printf("max vertex attributes %d\n", availableAttributes); } unsigned int compileShaderProgram() @@ -47,6 +53,8 @@ unsigned int compileShaderProgram() unsigned int shaderProgram = glCreateProgram(); glAttachShader(shaderProgram, vs); glAttachShader(shaderProgram, fs); + + // TODO: check program linking success glLinkProgram(shaderProgram); glDeleteShader(vs); diff --git a/src/gfx.h b/src/gfx.h index 0f08199..6e752f7 100644 --- a/src/gfx.h +++ b/src/gfx.h @@ -3,6 +3,7 @@ #define GLEW_STATIC #include "GL/glew.h" + #include #include @@ -11,7 +12,6 @@ void gfxInit(); SDL_Window* getWindow(); SDL_GLContext* getContext(); -GLuint compileShader(const char* path, GLenum type); unsigned int compileShaderProgram(); diff --git a/src/main.c b/src/main.c index 5ebdc77..73599ef 100644 --- a/src/main.c +++ b/src/main.c @@ -15,8 +15,13 @@ unsigned int indices[] = { }; // forward declarations + +// input int checkQuit(); +// time +float time(); + int main() { gfxInit(); @@ -24,8 +29,6 @@ int main() unsigned int shaderProgram = compileShaderProgram(); - // TODO: check program linking success - // vertex array object unsigned int VAO; glGenVertexArrays(1, &VAO); @@ -50,19 +53,34 @@ int main() glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3*sizeof(float), (void*)0); // TODO: wtf glEnableVertexAttribArray(0); + glUseProgram(shaderProgram); + // render loop while (!checkQuit()) { - glUseProgram(shaderProgram); + // clear background + glClearColor(0.2f, 0.3f, 0.3f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + // update uniforms + float time = (float)SDL_GetTicks() / 1000.0f; + float greenValue = (sin(time)/2.0f)+0.5f; + int vertexColorLocation = glGetUniformLocation(shaderProgram, "ourColor"); + glUniform4f(vertexColorLocation, 0.0f, greenValue, 0.0f, 1.0f); + + // draw glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); - SDL_GL_SwapWindow(window); } return 0; } +float time() +{ + return (float)SDL_GetTicks() / 1000.0f; // ms / 1000.0 = seconds since start +} + int checkQuit() { SDL_Event event;