aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjvech <jmvalenciae@unal.edu.co>2022-08-30 09:55:48 -0500
committerjvech <jmvalenciae@unal.edu.co>2022-08-30 09:55:48 -0500
commit1e677d8532d0832537112db9429e7ecdcff53215 (patch)
tree7d3b02b8630189203891f398ac58dafca2724124
parent61edf5b3a7eee3b4ff6db3664e638b17bf91ebc1 (diff)
feat: implement glUniformMatrix4fv and glUniform1f wrapper
-rw-r--r--TODO1
-rw-r--r--src/main.c13
-rw-r--r--src/shader.c14
-rw-r--r--src/shader.h2
4 files changed, 21 insertions, 9 deletions
diff --git a/TODO b/TODO
index 2607dc9..192e084 100644
--- a/TODO
+++ b/TODO
@@ -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
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
Feel free to download, copy and edit any repo