From 1e677d8532d0832537112db9429e7ecdcff53215 Mon Sep 17 00:00:00 2001 From: jvech Date: Tue, 30 Aug 2022 09:55:48 -0500 Subject: feat: implement glUniformMatrix4fv and glUniform1f wrapper --- src/main.c | 13 ++++--------- src/shader.c | 14 ++++++++++++++ src/shader.h | 2 ++ 3 files changed, 20 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index 0994746..bd7f95c 100644 --- a/src/main.c +++ b/src/main.c @@ -218,7 +218,6 @@ int main() mainCamera.front = linearVec3(0.0, 0.0, 0.0); mainCamera.up = linearVec3(0.0, 1.0, 0.0); - unsigned int modelLoc, viewLoc, projLoc; Mat4 model, view, proj; Mat4 T, S, R; @@ -245,20 +244,16 @@ int main() glfwGetWindowSize(window, &width, &height); proj = linearPerspective(35, width / (float)height, 0.1, 100); + glUseProgram(shaderProgram); glBindVertexArray(VAO); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); - modelLoc = glGetUniformLocation(shaderProgram, "model"); - viewLoc = glGetUniformLocation(shaderProgram, "view"); - projLoc = glGetUniformLocation(shaderProgram, "proj"); - - glUniformMatrix4fv(modelLoc, 1, GL_TRUE, model.matrix[0]); - glUniformMatrix4fv(viewLoc, 1, GL_TRUE, view.matrix[0]); - glUniformMatrix4fv(projLoc, 1, GL_TRUE, proj.matrix[0]); + shaderSetUniformMatrix4fv(shaderProgram, "model", model.matrix[0]); + shaderSetUniformMatrix4fv(shaderProgram, "view", view.matrix[0]); + shaderSetUniformMatrix4fv(shaderProgram, "proj", proj.matrix[0]); glDrawElements(GL_TRIANGLES, sizeof(indices) / sizeof(int), GL_UNSIGNED_INT, 0); - glfwSwapBuffers(window); glfwPollEvents(); } diff --git a/src/shader.c b/src/shader.c index 700628f..ae2f08e 100644 --- a/src/shader.c +++ b/src/shader.c @@ -99,3 +99,17 @@ shaderCreateProgram(const char *vertexShaderPath, const char *fragmentShaderPath return shaderProgram; } + +void +shaderSetUniformMatrix4fv(unsigned int program, char *uniformVariable, float *data) +{ + unsigned int varLoc = glGetUniformLocation(program, uniformVariable); + glUniformMatrix4fv(varLoc, 1, GL_TRUE, data); +} + +void +shaderSetUniform1f(unsigned int program, char *uniformVariable, float data) +{ + unsigned int varLoc = glGetUniformLocation(program, uniformVariable); + glUniform1f(varLoc, data); +} diff --git a/src/shader.h b/src/shader.h index 5f1e315..aa92314 100644 --- a/src/shader.h +++ b/src/shader.h @@ -2,4 +2,6 @@ #define __SHADER__ unsigned int shaderCreateProgram(const char *vertexShaderPath, const char *fragmentShaderPath); +void shaderSetUniformMatrix4fv(unsigned int program, char *uniformVariable, float *data); +void shaderSetUniform1f(unsigned int program, char *uniformVariable, float data); #endif -- cgit v1.2.3-70-g09d2