2 Copyright (C) 2003, 2010 - Wolfire Games
4 This file is part of Lugaru.
6 Lugaru is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License
8 as published by the Free Software Foundation; either version 2
9 of the License, or (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15 See the GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25 extern float viewdistance;
26 extern float blurness;
27 extern int environment;
28 extern bool skyboxtexture;
34 SkyBox::load (const char *ffront, const char *fleft, const char *fback,
35 const char *fright, const char *fup, const char *fdown)
37 Game::LoadTexture(ffront, &front, true, false);
38 Game::LoadTexture(fleft, &left, true, false);
39 Game::LoadTexture(fback, &back, true, false);
40 Game::LoadTexture(fright, &right, true, false);
41 Game::LoadTexture(fup, &up, true, false);
42 Game::LoadTexture(fdown, &down, true, false);
47 static float size=viewdistance/4;
50 glGetFloatv(GL_MODELVIEW_MATRIX,M);
55 if(environment==2)glScalef(1+blurness/1000,1,1+blurness/1000);
56 if(environment!=2)glColor3f(.85*skyboxr,.85*skyboxg,.95*skyboxb);
57 else glColor3f(1*skyboxr,.95*skyboxg,.95*skyboxb);
60 glDisable(GL_TEXTURE_2D);
61 glColor3f(skyboxr*.8,skyboxg*.8,skyboxb*.8);
64 glDisable(GL_CULL_FACE);
66 glDisable(GL_LIGHTING);
67 if(skyboxtexture)glEnable(GL_TEXTURE_2D);
68 glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
69 glBindTexture(GL_TEXTURE_2D, front);
70 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
71 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
73 glNormal3f( 0.0f, 0.0f, -1);
74 glTexCoord2f(0, 0); glVertex3f(-size, -size, size);
75 glTexCoord2f(1, 0); glVertex3f( size, -size, size);
76 glTexCoord2f(1, 1); glVertex3f( size, size, size);
77 glTexCoord2f(0, 1); glVertex3f(-size, size, size);
79 glBindTexture(GL_TEXTURE_2D, back);
80 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
81 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
83 glNormal3f( 0.0f, 0.0f, 1);
84 glTexCoord2f(1, 0); glVertex3f(-size, -size, -size);
85 glTexCoord2f(1, 1); glVertex3f(-size, size, -size);
86 glTexCoord2f(0, 1); glVertex3f( size, size, -size);
87 glTexCoord2f(0, 0); glVertex3f( size, -size, -size);
89 glBindTexture(GL_TEXTURE_2D, up);
90 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
91 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
93 glNormal3f( 0.0f, -1.0f, 0);
94 glTexCoord2f(0, 1); glVertex3f(-size, size, -size);
95 glTexCoord2f(0, 0); glVertex3f(-size, size, size);
96 glTexCoord2f(1, 0); glVertex3f( size, size, size);
97 glTexCoord2f(1, 1); glVertex3f( size, size, -size);
99 glBindTexture(GL_TEXTURE_2D, down);
100 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
101 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
103 glNormal3f( 0.0f, 1.0f, 0);
105 glTexCoord2f(0, 0); glVertex3f(-size, -size, -size);
106 glTexCoord2f(1, 0); glVertex3f( size, -size, -size);
107 glTexCoord2f(1, 1); glVertex3f( size, -size, size);
108 glTexCoord2f(0, 1); glVertex3f(-size, -size, size);
110 glBindTexture(GL_TEXTURE_2D, right);
111 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
112 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
114 glNormal3f( -1.0f, 0.0f, 0);
115 glTexCoord2f(1, 0); glVertex3f( size, -size, -size);
116 glTexCoord2f(1, 1); glVertex3f( size, size, -size);
117 glTexCoord2f(0, 1); glVertex3f( size, size, size);
118 glTexCoord2f(0, 0); glVertex3f( size, -size, size);
120 glBindTexture(GL_TEXTURE_2D, left);
121 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
122 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
124 glNormal3f( 1.0f, 0.0f, 0);
125 glTexCoord2f(0, 0); glVertex3f(-size, -size, -size);
126 glTexCoord2f(1, 0); glVertex3f(-size, -size, size);
127 glTexCoord2f(1, 1); glVertex3f(-size, size, size);
128 glTexCoord2f(0, 1); glVertex3f(-size, size, -size);
130 glEnable(GL_CULL_FACE);
137 if (front) glDeleteTextures( 1, &front );
138 if (left) glDeleteTextures( 1, &left );
139 if (back) glDeleteTextures( 1, &back );
140 if (right) glDeleteTextures( 1, &right );
141 if (up) glDeleteTextures( 1, &up );
142 if (down) glDeleteTextures( 1, &down );