diff options
Diffstat (limited to 'debug')
-rwxr-xr-x | debug/build.sh | 7 | ||||
-rwxr-xr-x | debug/debug | bin | 0 -> 396728 bytes | |||
-rw-r--r-- | debug/debug.c | 62 | ||||
-rw-r--r-- | debug/shader.frag | 12 | ||||
-rw-r--r-- | debug/shader.vert | 13 |
5 files changed, 94 insertions, 0 deletions
diff --git a/debug/build.sh b/debug/build.sh new file mode 100755 index 0000000..40da223 --- /dev/null +++ b/debug/build.sh @@ -0,0 +1,7 @@ +#!/bin/sh +include='-I../libs -I../libs/pwyazh' +cflags="-g -Wall -Wextra -Wno-unused-parameter $include" +libs='-lm -lGL -lGLEW -lglfw' +target='debug' +set -x +gcc -o $target $cflags $target.c $libs diff --git a/debug/debug b/debug/debug Binary files differnew file mode 100755 index 0000000..d516f24 --- /dev/null +++ b/debug/debug diff --git a/debug/debug.c b/debug/debug.c new file mode 100644 index 0000000..8cddc16 --- /dev/null +++ b/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; +} diff --git a/debug/shader.frag b/debug/shader.frag new file mode 100644 index 0000000..fd25c5f --- /dev/null +++ b/debug/shader.frag @@ -0,0 +1,12 @@ +#version 330 core + +in vec2 pos; + +out vec4 frag_color; + +uniform float time; + +void main() +{ + frag_color = vec4(sin(2.0 * time) * pos.x + 0.5, cos(2.0 * time) * pos.y + 0.5, 0.5, 1.0); +} diff --git a/debug/shader.vert b/debug/shader.vert new file mode 100644 index 0000000..e37e212 --- /dev/null +++ b/debug/shader.vert @@ -0,0 +1,13 @@ +#version 330 core + +layout(location = 0) in vec2 apos; + +out vec2 pos; + +uniform vec2 offset; + +void main() +{ + pos = apos; + gl_Position = vec4(apos + offset, 0.0, 1.0); +} |