From 3c22fed1feaba0e2c63896ea87928206f597087d Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Thu, 26 Jun 2014 11:15:34 -0400 Subject: [PATCH] GUI: add resize() and draw() --- src/gui/GUI.cc | 35 +++++++++++++++++++++++++++++++++-- src/gui/GUI.h | 2 ++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/gui/GUI.cc b/src/gui/GUI.cc index 546a7c2..ce56e2f 100644 --- a/src/gui/GUI.cc +++ b/src/gui/GUI.cc @@ -100,8 +100,8 @@ namespace jes int GUI::run() { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - SDL_GL_SwapWindow(m_window); + resize(); + draw(); SDL_Event event; while (SDL_WaitEvent(&event)) @@ -113,8 +113,39 @@ namespace jes if (event.key.keysym.sym == SDLK_ESCAPE) break; } + else if (event.type == SDL_WINDOWEVENT) + { + switch (event.window.event) + { + case SDL_WINDOWEVENT_EXPOSED: + draw(); + break; + case SDL_WINDOWEVENT_RESIZED: + resize(); + draw(); + break; + } + } } return 0; } + + void GUI::resize() + { + GLint viewport_size[2]; + SDL_GetWindowSize(m_window, &viewport_size[0], &viewport_size[1]); + glViewport(0, 0, viewport_size[0], viewport_size[1]); + for (int i = 0; i < PROGRAM_COUNT; i++) + { + m_programs[i]->use(); + glUniform2iv(m_programs[i]->get_uniform("viewport_size"), 1, &viewport_size[0]); + } + } + + void GUI::draw() + { + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + SDL_GL_SwapWindow(m_window); + } } diff --git a/src/gui/GUI.h b/src/gui/GUI.h index 9b466c5..45b36fa 100644 --- a/src/gui/GUI.h +++ b/src/gui/GUI.h @@ -22,6 +22,8 @@ namespace jes int run(); protected: bool load_shaders(); + void resize(); + void draw(); SDL_Window * m_window; FontManagerRef m_font_manager;