diff --git a/opengl-ren/charmap.ff b/opengl-ren/charmap.ff index 711c202..f3c0c54 100644 Binary files a/opengl-ren/charmap.ff and b/opengl-ren/charmap.ff differ diff --git a/opengl-ren/charmap.png b/opengl-ren/charmap.png index 017a3e7..4bfad2d 100644 Binary files a/opengl-ren/charmap.png and b/opengl-ren/charmap.png differ diff --git a/opengl-ren/main.c b/opengl-ren/main.c index d0d7ace..8814d2e 100644 --- a/opengl-ren/main.c +++ b/opengl-ren/main.c @@ -1,3 +1,4 @@ +#include #include #define _POSIX_C_SOURCE 200809l @@ -113,7 +114,7 @@ int vstack_push_quad_c(int x, int y, int w, int h, vec4 color) // x1,y1 x2,y2 int hw = w_width(ren.w)/2; - int hh = w_width(ren.w)/2; + int hh = w_height(ren.w)/2; float x1, x2, x3, x4; float y1, y2, y3, y4; @@ -152,7 +153,7 @@ int vstack_push_quad_t(int x, int y, int w, int h, int u, int v) // x1,y1 x2,y2 int hw = w_width(ren.w)/2; - int hh = w_width(ren.w)/2; + int hh = w_height(ren.w)/2; float x1, x2, x3, x4; float y1, y2, y3, y4; @@ -343,6 +344,9 @@ void ren_initshaders() void ren_drawvertbuffer() { glBindBuffer(GL_ARRAY_BUFFER, ren.gl_vertbuffer); + // upload vertex data + glBufferData(GL_ARRAY_BUFFER, vstack.idx*sizeof(struct vertex), vstack.v, GL_DYNAMIC_DRAW); + // draw vertex data glDrawArrays(GL_TRIANGLES, 0, vstack.idx); glBindBuffer(GL_ARRAY_BUFFER, 0); } @@ -437,13 +441,11 @@ int main (void) import_font("./charmap.ff"); vec4 magenta = {.r=1.0, .g=0.0, .b=1.0, .a=1.0}; - vstack_push_quad_c(0, 0, 100, 100, magenta); - vstack_push_quad_c(200, 0, 10, 10, magenta); - vstack_push_quad_c(10, 150, 100, 100, magenta); - push_text(250, 250, "ò Ciao Victoria <3"); ren_initvertbuffer(); + glClearColor(0.3f, 0.3f, 0.3f, 0.f); + // event loop and drawing SDL_Event ev = {0}; int running = 1; @@ -451,22 +453,33 @@ int main (void) SDL_WaitEvent(&ev); switch (ev.type) { case SDL_QUIT: running = 0; break; + case SDL_WINDOWEVENT: + glClear(GL_COLOR_BUFFER_BIT); + if(ev.window.event == SDL_WINDOWEVENT_SIZE_CHANGED) { + glViewport(0, 0, w_width(ren.w), w_height(ren.w)); + glScissor(0, 0, w_width(ren.w), w_height(ren.w)); + } + break; default: break; } - glViewport(0, 0, w_width(ren.w), w_height(ren.w)); - glClearColor(0.f, 0.f, 0.f, 0.f); - glClear(GL_COLOR_BUFFER_BIT); + vstack_push_quad_c(0, 0, 100, 100, magenta); + vstack_push_quad_c(200, 0, 10, 10, magenta); + vstack_push_quad_c(10, 150, 100, 100, magenta); + push_text(250, 250, "ò Ciao Victoria <3"); ren_drawvertbuffer(); SDL_GL_SwapWindow(ren.w); + vstack_clear(); + } while(running); glUseProgram(0); glDisableVertexAttribArray(vertindex); glDisableVertexAttribArray(colindex); + glDeleteTextures(1, &ren.font_texture); SDL_GL_DeleteContext(ren.gl); SDL_DestroyWindow(ren.w); SDL_Quit();