From 36509ea1a476b30f17b3436edd7f524861257389 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Wed, 6 Oct 2010 15:21:15 +0000 Subject: removed skydome support, corrected skybox edge issue --- src/render/sky.cc | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) (limited to 'src/render/sky.cc') diff --git a/src/render/sky.cc b/src/render/sky.cc index e40c4be..1b914a6 100644 --- a/src/render/sky.cc +++ b/src/render/sky.cc @@ -4,6 +4,7 @@ the terms of the GNU General Public License version 2 */ +#include "render/render.h" #include "render/camera.h" #include "render/sky.h" #include "render/textures.h" @@ -20,7 +21,7 @@ size_t Sky::sky_texture_back = 0; std::string Sky::sky_name; -void Sky::draw(const std::string & name) +void Sky::draw(const std::string & name, const float wireframe) { if (sky_name.compare(name) != 0) { unload(); @@ -31,28 +32,36 @@ void Sky::draw(const std::string & name) if (name.size()) { const std::string basename("textures/sky/" + name); - sky_texture_up = Textures::load(basename + "_up"); - sky_texture_down = Textures::load(basename + "_down"); - sky_texture_left = Textures::load(basename + "_left"); - sky_texture_right = Textures::load(basename + "_right"); - sky_texture_front = Textures::load(basename + "_front"); - sky_texture_back = Textures::load(basename + "_back"); + sky_texture_up = Textures::load(basename + "_up", false); + sky_texture_down = Textures::load(basename + "_down", false); + sky_texture_left = Textures::load(basename + "_left", false); + sky_texture_right = Textures::load(basename + "_right", false); + sky_texture_front = Textures::load(basename + "_front", false); + sky_texture_back = Textures::load(basename + "_back", false); } sky_name.assign(name); } /* - * NOTE - * for quake3 skyboxes: the _left texture is actually the right side of the skybox + * NOTE: + * to use quake3 skyboxes: + * switch left and right images + * rotate top image 90 degrees clockwise + * rotate bottom image 90 degrees counter-clockwise + * */ + + const gl::Primitive primitive = (wireframe ? gl::LineLoop : gl::Quads); + gl::push(); gl::translate(Camera::eye()); + gl::enable(GL_TEXTURE_2D); gl::color(1.0f, 1.0f, 1.0f, 1.0f); // front Textures::bind(sky_texture_front); - gl::begin(gl::Quads); + gl::begin(primitive); gl::texcoord(0, 0); gl::vertex(1, 1, 1); gl::texcoord(1, 0); gl::vertex(1, -1, 1); gl::texcoord(1, 1); gl::vertex(1, -1, -1); @@ -61,7 +70,7 @@ void Sky::draw(const std::string & name) // right Textures::bind(sky_texture_right); - gl::begin(gl::Quads); + gl::begin(primitive); gl::texcoord(0, 0); gl::vertex(1, -1, 1); gl::texcoord(1, 0); gl::vertex(-1, -1, 1); gl::texcoord(1, 1); gl::vertex(-1, -1, -1); @@ -70,7 +79,7 @@ void Sky::draw(const std::string & name) // back Textures::bind(sky_texture_back); - gl::begin(gl::Quads); + gl::begin(primitive); gl::texcoord(0, 0); gl::vertex(-1, -1, 1); gl::texcoord(1, 0); gl::vertex(-1, 1, 1); gl::texcoord(1, 1); gl::vertex(-1, 1, -1); @@ -79,7 +88,7 @@ void Sky::draw(const std::string & name) // left Textures::bind(sky_texture_left); - gl::begin(gl::Quads); + gl::begin(primitive); gl::texcoord(0, 0); gl::vertex(-1, 1, 1); gl::texcoord(1, 0); gl::vertex(1, 1, 1); gl::texcoord(1, 1); gl::vertex(1, 1, -1); @@ -88,7 +97,7 @@ void Sky::draw(const std::string & name) // up Textures::bind(sky_texture_up); - gl::begin(gl::Quads); + gl::begin(primitive); gl::texcoord(0, 0); gl::vertex(-1, 1, 1); gl::texcoord(1, 0); gl::vertex(-1, -1, 1); gl::texcoord(1, 1); gl::vertex(1, -1, 1); @@ -97,7 +106,7 @@ void Sky::draw(const std::string & name) // down Textures::bind(sky_texture_down); - gl::begin(gl::Quads); + gl::begin(primitive); gl::texcoord(0, 0); gl::vertex(1, 1, -1); gl::texcoord(1, 0); gl::vertex(1, -1, -1); gl::texcoord(1, 1); gl::vertex(-1, -1, -1); @@ -107,6 +116,8 @@ void Sky::draw(const std::string & name) gl::pop(); gl::disable(GL_TEXTURE_2D); + + Stats::quads += 6; } void Sky::unload() -- cgit v1.2.3