From 7d93cab1eb1629b068858a68ac5e5840fe84a83a Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Tue, 10 May 2011 15:40:02 +0200 Subject: Added fog and implemented a simple skybox. --- scene.cpp | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) (limited to 'scene.cpp') diff --git a/scene.cpp b/scene.cpp index b8f7268..bf49c57 100644 --- a/scene.cpp +++ b/scene.cpp @@ -316,15 +316,18 @@ void Scene::render() { //glLightfv(GL_LIGHT0, GL_POSITION, light_pos); if(render_terrain) { + const float fog_color[4] = {1, 1, 1, 0}; + glFogfv(GL_FOG_COLOR, fog_color); terrain_program.use(); GLint show_sel = glGetUniformLocation(terrain_program.get_program(), "show_sel"); glUniform1i(show_sel, show_selection ? 1 : 0); - GLint chunk_pos; if(show_selection) { GLint selpos = glGetUniformLocation(terrain_program.get_program(), "selpos"); glUniform3f(selpos, selected.x, selected.y, selected.z); - chunk_pos = glGetUniformLocation(terrain_program.get_program(), "chunk_pos"); } + GLint chunk_pos = glGetUniformLocation(terrain_program.get_program(), "chunk_pos"); + GLint player_pos = glGetUniformLocation(terrain_program.get_program(), "player_pos"); + glUniform3f(player_pos, pos.x, pos.y, pos.z); glEnable(GL_TEXTURE_2D); @@ -355,8 +358,7 @@ void Scene::render() { continue;*/ glPushMatrix(); glTranslatef(-pos.x + chunk->x, -pos.y, -pos.z + chunk->y); - if(show_selection) - glUniform2f(chunk_pos, chunk->x, chunk->y); + glUniform2f(chunk_pos, chunk->x, chunk->y); glBindBuffer(GL_ARRAY_BUFFER, chunk->vbo_object); glVertexPointer(3, GL_FLOAT, 0, NULL); @@ -423,6 +425,27 @@ void Scene::render() { show_selection = true; } + glDisable(GL_TEXTURE_2D); + + glPushMatrix(); + glTranslatef(700*cosf(yaw), 0, 700*sinf(yaw)); + glRotatef(-yaw*180/M_PI+180, 0, 1, 0); + glBegin(GL_QUADS); + glColor3f(1, 1, 1); + glVertex3f(0, 0, -700); + glVertex3f(0, 0, 700); + glColor3f(.5, .5, 1); + glVertex3f(0, 550, 700); + glVertex3f(0, 550, -700); + + glVertex3f(0, 550, -700); + glVertex3f(0, 550, 700); + glColor3f(0, 0, .3); + glVertex3f(1000, 550, 700); + glVertex3f(1000, 550, -700); + glEnd(); + glPopMatrix(); + video::ortho(); float height = font->LineHeight(); glColor3f(1, 1, 1); -- cgit v1.2.3