From da66d49b8a7bcc808df201bee5c7cb787b6f30b7 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sun, 13 Dec 2009 18:49:36 +0100 Subject: Basic infrastructure --- Game.cpp | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 Game.cpp (limited to 'Game.cpp') 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 + * + * 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 . + */ + +#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 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(); +} + +} -- cgit v1.2.3