diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2009-12-13 18:49:36 +0100 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2009-12-13 18:49:36 +0100 |
commit | da66d49b8a7bcc808df201bee5c7cb787b6f30b7 (patch) | |
tree | 2ded525251ba7b8dfd812edd8a0a29d06a6a3106 /Game.cpp | |
download | zoom++-da66d49b8a7bcc808df201bee5c7cb787b6f30b7.tar zoom++-da66d49b8a7bcc808df201bee5c7cb787b6f30b7.zip |
Basic infrastructure
Diffstat (limited to 'Game.cpp')
-rw-r--r-- | Game.cpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/Game.cpp b/Game.cpp new file mode 100644 index 0000000..bd028c2 --- /dev/null +++ b/Game.cpp @@ -0,0 +1,81 @@ +/* + * Game.cpp + * + * Copyright (C) 2009 Matthias Schiffer <matthias@gamezock.de> + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "Game.h" +#include "BSPTree.h" +#include "Triangle.h" +#include "gl.h" + +namespace Zoom { + +Game::Game(bool multisample) : angle(0) { + glClearColor(0.0, 0.0, 0.0, 1.0); + //glEnable(GL_DEPTH_TEST); + //glDepthFunc(GL_LEQUAL); + + //glEnable(GL_BLEND); + //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + +#ifndef _WIN32 + if(multisample) + glEnable(GL_MULTISAMPLE_ARB); +#endif + + /*glEnable(GL_LIGHTING); + static const float light[] = {1, 1, 1, 0}; + static const float lightColor[] = {1, 1, 1, 1}; + glLightfv(GL_LIGHT0, GL_POSITION, light); + glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor); + glEnable(GL_LIGHT0);*/ + + //glEnable(GL_CULL_FACE); + //glFrontFace(GL_CCW); + + glLoadIdentity(); + glTranslatef(0, 0, -5); +} + +void Game::run(int delta) { + angle += delta*0.2; + + if(angle >= 360) + angle -= 360; +} + +void Game::render() { + std::list<Triangle> triangles; + + triangles.push_back(Triangle(vmml::vec3f(-1, -1, 0), vmml::vec3f(1, -1, 0), vmml::vec3f(1, 1, 0), vmml::vec3f(0, 1, 0))); + triangles.push_back(Triangle(vmml::vec3f(-1, -1, 0), vmml::vec3f(-1, 1, 0), vmml::vec3f(1, 1, 0), vmml::vec3f(0, 1, 0))); + triangles.push_back(Triangle(vmml::vec3f(-1, -1, -1), vmml::vec3f(1, -1, -1), vmml::vec3f(1, 1, -1), vmml::vec3f(0, 0, 1))); + triangles.push_back(Triangle(vmml::vec3f(-1, -1, -1), vmml::vec3f(-1, 1, -1), vmml::vec3f(1, 1, -1), vmml::vec3f(0, 0, 1))); + + BSPTree tree(triangles); + + glClear(GL_COLOR_BUFFER_BIT); + + glPushMatrix(); + glRotatef(angle, 1, 2, 1); + + renderer.render(tree); + + glPopMatrix(); +} + +} |