aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorjvech <jmvalenciae@unal.edu.co>2022-08-19 10:08:09 -0500
committerjvech <jmvalenciae@unal.edu.co>2022-08-19 10:08:09 -0500
commit3bad7358dc55a969aec23bb5a5932c072d4beedd (patch)
treee4685599e1c433300bbf6f734e4fbff2597eda0b /src/main.c
parentebb66ddbb17a3b82f7632a07fa4db60223b9e55a (diff)
feat: vertex and fragment shader loader implemented
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c76
1 files changed, 10 insertions, 66 deletions
diff --git a/src/main.c b/src/main.c
index 2d296a8..af2c65a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -6,24 +6,9 @@
#include <GL/glew.h>
#include <GLFW/glfw3.h>
+#include "shader.h"
#include "main.h"
-const char *vertexShaderSource = \
-"#version 330 core\n"
-"layout (location = 0) in vec3 aPos;\n"
-"void main()\n"
-"{\n"
-" gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
-"}\0";
-
-const char *fragmentShaderSource = \
-"#version 330 core\n"
-"out vec4 FragColor;\n"
-"void main()\n"
-"{\n"
-" FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);\n"
-"}\0";
-
float vertices[] = {
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
@@ -34,7 +19,6 @@ float vertices[] = {
static void userError(const char *msg, const char *detail);
static void glfw_size_callback(GLFWwindow *window, int width, int height);
static void processInput(GLFWwindow *window, struct Background *c);
-static void checkGLSuccess(unsigned int compiledShader, unsigned int shaderStep);
void
userError(const char *msg, const char *detail)
@@ -64,34 +48,6 @@ processInput(GLFWwindow *window, struct Background *c)
}
}
-void
-checkGLSuccess(unsigned int shaderBinary, unsigned int shaderStep)
-{
- int success;
- char infoLog[512];
- switch (shaderStep) {
- case 0:
- glGetShaderiv(shaderBinary, GL_COMPILE_STATUS, &success);
- if (!success) {
- glGetShaderInfoLog(shaderBinary, 512, NULL, infoLog);
- userError("glCompileShader() ERROR", infoLog);
- }
- break;
-
- case 1:
- glGetProgramiv(shaderBinary, GL_LINK_STATUS, &success);
-
- if (!success) {
- glGetProgramInfoLog(shaderBinary, 512, NULL, infoLog);
- userError("glLinkProgram() ERROR", infoLog);
- }
- break;
-
- default:
- break;
- }
-}
-
int main()
{
GLFWwindow *window;
@@ -125,32 +81,18 @@ int main()
glBindVertexArray(VAO);
glGenBuffers(1, &VBO);
+
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
+
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void *)0);
glEnableVertexAttribArray(0);
- unsigned int vertexShader, fragmentShader, shaderProgram;
- vertexShader = glCreateShader(GL_VERTEX_SHADER);
- glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
- glCompileShader(vertexShader);
- checkGLSuccess(vertexShader, 0);
- printf("Vertex Compiled\n");
-
- fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
- glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL);
- glCompileShader(fragmentShader);
- checkGLSuccess(fragmentShader, 0);
- printf("Fragment Compiled\n");
-
- shaderProgram = glCreateProgram();
- glAttachShader(shaderProgram, vertexShader);
- glAttachShader(shaderProgram, fragmentShader);
- glLinkProgram(shaderProgram);
- checkGLSuccess(shaderProgram, 1);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+ glBindVertexArray(0);
- glDeleteShader(vertexShader);
- glDeleteShader(fragmentShader);
+ unsigned int shaderProgram = shaderCreateProgram("shaders/vertex.vsh",
+ "shaders/fragment.vsh");
while (!glfwWindowShouldClose(window)) {
processInput(window, &colors);
@@ -160,12 +102,14 @@ int main()
glUseProgram(shaderProgram);
glBindVertexArray(VAO);
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glDrawArrays(GL_TRIANGLES, 0, 3);
glfwSwapBuffers(window);
glfwPollEvents();
}
+ int nattributes;
+ glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &nattributes);
+ printf("%d\n", nattributes);
glfwTerminate();
return 0;
}
Feel free to download, copy and edit any repo