diff options
author | jvech <jmvalenciae@unal.edu.co> | 2022-08-30 09:55:48 -0500 |
---|---|---|
committer | jvech <jmvalenciae@unal.edu.co> | 2022-08-30 09:55:48 -0500 |
commit | 1e677d8532d0832537112db9429e7ecdcff53215 (patch) | |
tree | 7d3b02b8630189203891f398ac58dafca2724124 | |
parent | 61edf5b3a7eee3b4ff6db3664e638b17bf91ebc1 (diff) |
feat: implement glUniformMatrix4fv and glUniform1f wrapper
-rw-r--r-- | TODO | 1 | ||||
-rw-r--r-- | src/main.c | 13 | ||||
-rw-r--r-- | src/shader.c | 14 | ||||
-rw-r--r-- | src/shader.h | 2 |
4 files changed, 21 insertions, 9 deletions
@@ -5,6 +5,7 @@ General - Add 3D objects - define a format for 3D objects + - Implement a function to load objects from a file - Render a set of vertices loaded from a file * Implement Camera movement @@ -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 |