From c9e914eeaa624cfa796bdea13ebb1056dfda5c9b Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Sat, 26 Jun 2010 18:06:40 +0200 Subject: Create a seperate Background class for stage background. --- engine/background.cpp | 37 +++++++++++++++++++++++++++++++++++++ engine/background.h | 9 +++++++++ engine/engine.cpp | 43 +------------------------------------------ engine/stage.cpp | 13 +++++++++++++ engine/stage.h | 3 +++ 5 files changed, 63 insertions(+), 42 deletions(-) create mode 100644 engine/background.cpp create mode 100644 engine/background.h diff --git a/engine/background.cpp b/engine/background.cpp new file mode 100644 index 0000000..076c6cf --- /dev/null +++ b/engine/background.cpp @@ -0,0 +1,37 @@ +#include "background.h" + +#include +#include + +void Background::draw() { + 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(); + + static float f = 0.0; + f += 0.01; + + 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) + glColor3f(1, 1, 1); + else + glColor3f(.5, .5, .5); + glVertex3f(i, 0, -10); + glVertex3f(i, 0, 10); + glVertex3f(-10, 0, i); + glVertex3f(10, 0, i); + } + glEnd(); +} diff --git a/engine/background.h b/engine/background.h new file mode 100644 index 0000000..4c294c8 --- /dev/null +++ b/engine/background.h @@ -0,0 +1,9 @@ +#ifndef BACKGROUND_H +#define BACKGROUND_H + +class Background { + public: + void draw(); +}; + +#endif diff --git a/engine/engine.cpp b/engine/engine.cpp index 2e681e7..e67ead3 100644 --- a/engine/engine.cpp +++ b/engine/engine.cpp @@ -101,51 +101,10 @@ void Engine::update() { float v_w = Config::window_h * Config::viewport_w; float v_h = Config::window_h * Config::viewport_h; - glViewport( - v_x - v_w * 0.5, - v_y - v_h * 0.5, - v_w * 2, - v_h * 2); + glViewport(v_x - v_w * 0.5, v_y - v_h * 0.5, v_w * 2, v_h * 2); glScissor(v_x, v_y, v_w, v_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(); - - float f = tick * 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) - glColor3f(1, 1, 1); - else - glColor3f(.5, .5, .5); - glVertex3f(i, 0, -10); - glVertex3f(i, 0, 10); - glVertex3f(-10, 0, i); - glVertex3f(10, 0, i); - } - glEnd(); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-0.5, 1.5, -Config::viewport_aspect * 0.5, Config::viewport_aspect * 1.5, 0, 10); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - stage->draw(); glDisable(GL_SCISSOR_TEST); diff --git a/engine/stage.cpp b/engine/stage.cpp index 39cf52a..6bcd622 100644 --- a/engine/stage.cpp +++ b/engine/stage.cpp @@ -1,11 +1,15 @@ #include "stage.h" +#include "config.h" + #include #include #include Stage::Stage() { + background = new Background(); + player = new Player(); texture = new TextureSDL("textures/shot1.png"); @@ -37,6 +41,15 @@ void Stage::update() { } void Stage::draw() { + background->draw(); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(-0.5, 1.5, -Config::viewport_aspect * 0.5, Config::viewport_aspect * 1.5, 0, 10); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + player->draw(); for(std::vector::iterator it = enemy_list.begin(); it < enemy_list.end(); it++) { diff --git a/engine/stage.h b/engine/stage.h index bc687da..a53b5fd 100644 --- a/engine/stage.h +++ b/engine/stage.h @@ -1,6 +1,7 @@ #ifndef STAGE_H #define STAGE_H +#include "background.h" #include "player.h" #include #include @@ -11,6 +12,8 @@ class Stage { private: + Background* background; + Player* player; GLShaderProgram* shader; -- cgit v1.2.3