vtgl

terminal emulator implemented in OpenGL
git clone anongit@rnpnr.xyz:vtgl.git
Log | Files | Refs | Feed | LICENSE

Commit: a21c5f2b54962555719b33ec62cbee1b5c486ef8
Parent: 75e230d9bf89f16182a24b180d4f84bd23552927
Author: Randy Palamar
Date:   Sat, 22 Jun 2024 15:11:15 -0600

keep track of dt

Diffstat:
Mmain.c | 5+++++
Mvtgl.c | 27++++++++++++++++++++++++++-
2 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/main.c b/main.c @@ -238,10 +238,15 @@ main(void) init_window(&term); + f32 last_time = 0; while (!glfwWindowShouldClose(term.gl.window)) { do_debug(&term.gl); check_shaders(&term.gl, memory); + f32 current_time = (f32)glfwGetTime(); + term.gl.dt = current_time - last_time; + last_time = current_time; + glfwPollEvents(); do_terminal(&term, memory); glfwSwapBuffers(term.gl.window); diff --git a/vtgl.c b/vtgl.c @@ -101,7 +101,32 @@ do_terminal(Term *t, Arena a) clear_colour(); + v2 r2size = {.x = 100, .y = 100}; + static v2 r2pos = {.x = 50, .y = 300}; + static v2 r2dir = {.x = 1, .y = -1 }; + + r2pos.x += r2dir.x * t->gl.dt * 100; + r2pos.y += r2dir.y * t->gl.dt * 140; + if (r2pos.x + r2size.x > (f32)t->gl.window_size.w) { + r2pos.x = (f32)t->gl.window_size.w - r2size.x; + r2dir.x *= -1; + } + if (r2pos.x < 0) { + r2pos.x = 0; + r2dir.x *= -1; + } + + if (r2pos.y + r2size.y > (f32)t->gl.window_size.h) { + r2pos.y = (f32)t->gl.window_size.h - r2size.y; + r2dir.y *= -1; + } + + if (r2pos.y < 0) { + r2pos.y = 0; + r2dir.y *= -1; + } + draw_rectangle(&t->gl, (v2){.x = 20, .y = 20}, (v2){.x = 200, .y = 100}, 0x7f0000ff, 0); - draw_rectangle(&t->gl, (v2){.x = 50, .y = 300}, (v2){.x = 100, .y = 100}, 0x007f00ff, 0); + draw_rectangle(&t->gl, r2pos, r2size, 0x007f00ff, 0); draw_rectangle(&t->gl, (v2){.x = 100, .y = 600}, (v2){.x = 50, .y = 100}, 0x00007fff, 0); }