From ca56469cbb3ebf77dba433da9b23698ff5138a3d Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Fri, 21 May 2010 00:51:01 +0200 Subject: Added background. --- application.cpp | 92 +++++++++++++++++++++++++++++++++----------------------- application.h | 1 + background.png | Bin 0 -> 13359 bytes config.h | 14 ++++----- 4 files changed, 63 insertions(+), 44 deletions(-) create mode 100644 background.png diff --git a/application.cpp b/application.cpp index b9a6173..87797b1 100644 --- a/application.cpp +++ b/application.cpp @@ -143,6 +143,7 @@ void Application::run() { font = new FTPixmapFont("VeraMono.ttf"); font->FaceSize(12); + background = new TextureSDL("background.png"); texture = new TextureSDL("foo4.png"); shader = new GLShaderProgram(); @@ -185,8 +186,53 @@ void Application::run() { } void Application::main_loop(unsigned int tick, unsigned int step) { + if(!paused) { + elapsed += step; + for(std::vector::iterator it = patterns.begin(); it < patterns.end(); it++) { + (*it)->update(elapsed, step); + } + } + + glClearColor(0, 0, 0, 0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glViewport(0, 0, Config::window_w, Config::window_h); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0, Config::window_w, 0, Config::window_h, 0, 10); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + glBindTexture(GL_TEXTURE_2D, background->tex()); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); + glVertex2i(0, 0); + glTexCoord2f(0, 1); + glVertex2i(0, Config::window_h); + glTexCoord2f(1, 1); + glVertex2i(Config::window_w, Config::window_h); + glTexCoord2f(1, 0); + glVertex2i(Config::window_w, 0); + glEnd(); + + glDisable(GL_TEXTURE_2D); + glColor4f(0, 0, 0, 1); + + char s[0xff]; + + if(tick - lastframes >= 1000) { + fps = (float)frames * ((float)(tick - lastframes) / 1000.0f); + frames = 1; + lastframes = tick; + } else { + frames++; + } + snprintf(s, 0xff, "FPS: %.2f", fps); + glRasterPos2f(Config::fps_x, Config::fps_y); + font->Render(s); + glViewport( Config::viewport_x - Config::viewport_overscan, Config::viewport_y - Config::viewport_overscan, @@ -194,28 +240,24 @@ void Application::main_loop(unsigned int tick, unsigned int step) { Config::viewport_h + Config::viewport_overscan * 2); glScissor(Config::viewport_x, Config::viewport_y, Config::viewport_w, Config::viewport_h); glEnable(GL_SCISSOR_TEST); - + + glClearColor(0.2, 0.2, 0.2, 0); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45, (float)660 / (float)740, 1, 100); - + glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - if(!paused) { - elapsed += step; - for(std::vector::iterator it = patterns.begin(); it < patterns.end(); it++) { - (*it)->update(elapsed, step); - } - } - float f = elapsed * 0.0005; gluLookAt( 5 * sinf(f), 1, 5 * cosf(f), 0, 0, 0, 5 * sinf(f), 2, 5 * cosf(f)); - + glBegin(GL_LINES); for(int i = -10; i < 11; i++) { if(i % 5 == 0) @@ -228,7 +270,7 @@ void Application::main_loop(unsigned int tick, unsigned int step) { glVertex3f(10, 0, i); } glEnd(); - + glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho( @@ -237,10 +279,10 @@ void Application::main_loop(unsigned int tick, unsigned int step) { -float(Config::viewport_overscan) / float(Config::viewport_h), Config::viewport_aspect + float(Config::viewport_overscan) / float(Config::viewport_h), 0, 10); - + glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE); shader->use(); @@ -256,33 +298,9 @@ void Application::main_loop(unsigned int tick, unsigned int step) { bp->draw(); } - glDisable(GL_TEXTURE_2D); glUseProgram(0); glDisable(GL_SCISSOR_TEST); - glViewport(0, 0, Config::window_w, Config::window_h); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, Config::window_w, 0, Config::window_h, 0, 10); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glColor4f(1, 1, 1, 1); - - char s[0xff]; - - if(tick - lastframes >= 1000) { - fps = (float)frames * ((float)(tick - lastframes) / 1000.0f); - frames = 1; - lastframes = tick; - } else { - frames++; - } - snprintf(s, 0xff, "FPS: %.2f", fps); - glRasterPos2f(Config::fps_x, Config::fps_y); - font->Render(s); SDL_GL_SwapBuffers(); } diff --git a/application.h b/application.h index e40af07..1378be6 100644 --- a/application.h +++ b/application.h @@ -22,6 +22,7 @@ class Application { float fps; FTFont* font; + Texture* background; Texture* texture; GLShaderProgram* shader; diff --git a/background.png b/background.png new file mode 100644 index 0000000..a97cc05 Binary files /dev/null and b/background.png differ diff --git a/config.h b/config.h index fdab6e2..cb69153 100644 --- a/config.h +++ b/config.h @@ -2,19 +2,19 @@ #define CONFIG_H namespace Config { - const unsigned int window_w = 1280; - const unsigned int window_h = 720; + const unsigned int window_w = 1920; + const unsigned int window_h = 1080; - const unsigned int viewport_x = 20; - const unsigned int viewport_y = 20; - const unsigned int viewport_w = 600; - const unsigned int viewport_h = 680; + const unsigned int viewport_x = 300; + const unsigned int viewport_y = 15; + const unsigned int viewport_w = 900; + const unsigned int viewport_h = 1050; const unsigned int viewport_overscan = 10; const float viewport_aspect = float(viewport_h) / float(viewport_w); - const unsigned int fps_x = 641; + const unsigned int fps_x = 1; const unsigned int fps_y = 1; }; -- cgit v1.2.3