summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c100
1 files changed, 73 insertions, 27 deletions
diff --git a/src/main.c b/src/main.c
index a899cbb..05ae9da 100644
--- a/src/main.c
+++ b/src/main.c
@@ -45,18 +45,52 @@ main([[maybe_unused]] int argc, [[maybe_unused]] char **argv)
return 1;
}
+ glEnable(GL_DEPTH_TEST);
glViewport(0, 0, 800, 600);
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
static const float verts[] = {
- 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, // top right
- 0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // bottom right
- -0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // bottom left
- -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f // top left
- };
- static const GLuint indices[] = {
- 0, 1, 3, // first triangle
- 1, 2, 3 // second triangle
+ -0.5f, -0.5f, -0.5f, 0.0f, 0.0f,
+ 0.5f, -0.5f, -0.5f, 1.0f, 0.0f,
+ 0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
+ 0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
+ -0.5f, 0.5f, -0.5f, 0.0f, 1.0f,
+ -0.5f, -0.5f, -0.5f, 0.0f, 0.0f,
+
+ -0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
+ 0.5f, -0.5f, 0.5f, 1.0f, 0.0f,
+ 0.5f, 0.5f, 0.5f, 1.0f, 1.0f,
+ 0.5f, 0.5f, 0.5f, 1.0f, 1.0f,
+ -0.5f, 0.5f, 0.5f, 0.0f, 1.0f,
+ -0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
+
+ -0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
+ -0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
+ -0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
+ -0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
+ -0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
+ -0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
+
+ 0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
+ 0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
+ 0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
+ 0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
+ 0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
+ 0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
+
+ -0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
+ 0.5f, -0.5f, -0.5f, 1.0f, 1.0f,
+ 0.5f, -0.5f, 0.5f, 1.0f, 0.0f,
+ 0.5f, -0.5f, 0.5f, 1.0f, 0.0f,
+ -0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
+ -0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
+
+ -0.5f, 0.5f, -0.5f, 0.0f, 1.0f,
+ 0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
+ 0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
+ 0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
+ -0.5f, 0.5f, 0.5f, 0.0f, 0.0f,
+ -0.5f, 0.5f, -0.5f, 0.0f, 1.0f
};
GLuint VBO;
glGenBuffers(1, &VBO);
@@ -69,14 +103,12 @@ main([[maybe_unused]] int argc, [[maybe_unused]] char **argv)
glBindVertexArray(VAO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(verts), verts, GL_STATIC_DRAW);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
- glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
- glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0);
+ //glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
+ //glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
+ glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0);
- glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(3 * sizeof(float)));
+ glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)(3 * sizeof(float)));
glEnableVertexAttribArray(1);
- glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float)));
- glEnableVertexAttribArray(2);
Shader shader;
if (shader_init(&shader,
@@ -99,21 +131,15 @@ main([[maybe_unused]] int argc, [[maybe_unused]] char **argv)
return 1;
}
- const GLint vertex_color_location =
- shader_uniform_location(&shader, "ourColor");
-
//glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, GL_LINEAR);
while (!glfwWindowShouldClose(window)) {
- glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
- glClear(GL_COLOR_BUFFER_BIT);
+ glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
shader_use(&shader);
- const int r = 0;//rand();
- glUniform4f(vertex_color_location,
- !(r&1), !(r&2), !(r&4), !(r&8));
glUniform1i(shader_uniform_location(&shader, "texture0"), 0);
glUniform1i(shader_uniform_location(&shader, "texture1"), 1);
glActiveTexture(GL_TEXTURE0);
@@ -122,14 +148,34 @@ main([[maybe_unused]] int argc, [[maybe_unused]] char **argv)
glBindTexture(GL_TEXTURE_2D, texture1.id);
glBindVertexArray(VAO);
+ mat4 model = GLM_MAT4_IDENTITY_INIT;
+ glm_rotate(model, radians(-55.0f), (vec3){1.0f, 0.0f, 0.0f});
+
+ mat4 view = GLM_MAT4_IDENTITY_INIT;
+ glm_translate(view, (vec3){0.0f, 0.0f, -3.0f});
+
+ mat4 projection = GLM_MAT4_IDENTITY_INIT;
+ glm_perspective(radians(45.0f), 1.0f, 0.1f, 100.0f, projection);
+
+ glUniformMatrix4fv(shader_uniform_location(&shader,
+ "model"),
+ 1, GL_FALSE, model[0]);
+ glUniformMatrix4fv(shader_uniform_location(&shader,
+ "view"),
+ 1, GL_FALSE, view[0]);
+ glUniformMatrix4fv(shader_uniform_location(&shader,
+ "projection"),
+ 1, GL_FALSE, projection[0]);
+
mat4 trans = GLM_MAT4_IDENTITY_INIT;
- glm_translate(trans, (vec3){0.0f, 0.5f, 0.2f});
- glm_rotate(trans, glfwGetTime(), (vec3){0.0f, 0.0f, 1.0f});
- glm_scale(trans, (vec3){0.5f, 0.5f, 0.5f});
+ //glm_translate(trans, (vec3){0.0f, 0.5f, 0.2f});
+ //glm_rotate(trans, glfwGetTime(), (vec3){0.0f, 1.0f, 1.0f});
+ //glm_scale(trans, (vec3){0.5f, 0.5f, 0.5f});
+
glUniformMatrix4fv(shader_uniform_location(&shader,
"transform"),
1, GL_FALSE, trans[0]);
- glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
+ glDrawArrays(GL_TRIANGLES, 0, 36);
glm_mat4_identity(trans);
glm_rotate(trans, glfwGetTime() * 2, (vec3){0.0f, 0.0f, 1.0f});
@@ -137,7 +183,7 @@ main([[maybe_unused]] int argc, [[maybe_unused]] char **argv)
glUniformMatrix4fv(shader_uniform_location(&shader,
"transform"),
1, GL_FALSE, trans[0]);
- glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
+ glDrawArrays(GL_TRIANGLES, 0, 36);
glfwSwapBuffers(window);
glfwPollEvents();
}