diff options
author | pryazha <pryadeiniv@mail.ru> | 2025-08-16 10:11:00 +0500 |
---|---|---|
committer | pryazha <pryadeiniv@mail.ru> | 2025-08-16 10:11:00 +0500 |
commit | 1f93c3ef62af6c71217f06491ca2b859d4065740 (patch) | |
tree | 4f07192788df29446aa1ddb73a20839e4ddf9b3f /in_practice/debug/debug.c | |
parent | 99337878eca2807436bcf11d36946b90db44a2d3 (diff) |
in practice chapter
Diffstat (limited to 'in_practice/debug/debug.c')
-rw-r--r-- | in_practice/debug/debug.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/in_practice/debug/debug.c b/in_practice/debug/debug.c new file mode 100644 index 0000000..8cddc16 --- /dev/null +++ b/in_practice/debug/debug.c @@ -0,0 +1,62 @@ +#include <GL/glew.h> +#include <GLFW/glfw3.h> + +#include "common.h" + +int main(void) +{ + state_t state = init_state(1600, 800, 1); + init_glfw(&state); + init_gl(); + + F32 vertices[] = { + -0.5f, -0.5f, + 0.0f, 0.5f, + 0.5f, -0.5f + }; + U32 indices[] = { + 0, 1, 2 + }; + U32 vao = 0, vbo = 0, ebo = 0; + glGenVertexArrays(1, &vao); + glGenBuffers(1, &ebo); + glGenBuffers(1, &vbo); + glBindVertexArray(vao); + glBindBuffer(GL_ARRAY_BUFFER, vbo); + glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW); + glEnableVertexAttribArray(0); + glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(F32), 0); + glBindVertexArray(0); + + add_shader("shader.vert", "shader.frag", 0); + U32 shader = find_shader("shader"); + glUseProgram(shader); + + glClearColor(0.16f, 0.16f, 0.16f, 1.0f); + glBindVertexArray(vao); + + V2F offset = v2f(0.0f, 0.0f); + F32 time = 0.0f; + + while (!glfwWindowShouldClose(state.window)) { + handle_glfw_events(state.window, &state.input); + F32 dt = lock_framerate(60); + + /* update */ + offset.x += 0.5f * dt; + + /* render */ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glUniform2fv(glGetUniformLocation(shader, "offset"), 1, (F32 *)&offset); + glUniform1f(glGetUniformLocation(shader, "time"), time); + glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, 0); + + glfwSwapBuffers(state.window); + + time += dt; + } + + return 0; +} |