diff --git a/data/wall.tga b/data/wall.tga new file mode 100644 index 0000000..9f1ef39 Binary files /dev/null and b/data/wall.tga differ diff --git a/src/main.cpp b/src/main.cpp index 4e7daf1..a8e47d2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -536,6 +536,134 @@ void explosion_callback(double x, double y, double z) { explosion.add(x, y, z); } +GLuint wallTex = 0; + +void draw_box() { + + glBindTexture(GL_TEXTURE_2D, wallTex); + glEnable( GL_TEXTURE_2D); + + if (wallTex == 0) { + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glfwLoadTexture2D("data/wall.tga", 0); + } + + GLfloat red[] = { 0.1f, 0.2f, 0.3f, 1.0f }; + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); + + // Enable/Disable features + glPushAttrib( GL_ENABLE_BIT); + glEnable(GL_TEXTURE_2D); + //glDisable( GL_DEPTH_TEST); + // glEnable( GL_LIGHTING); + // glDisable( GL_BLEND); + glMatrixMode( GL_MODELVIEW); + glPushMatrix(); + glTranslated(2000.0, 0.0, 0.0); + //glScaled(5000.0f, 5000.0f, 5000.0f); + float s = 2500.0; + // Just in case we set all vertices to white. + glColor4f(1, 1, 1, 1); + + // Render the front quad + // glBindTexture(GL_TEXTURE_2D, _skybox[0]); + glBegin( GL_QUADS); + + glTexCoord2f(0, 0); + glNormal3f(0.0, 0.0, 1.0); + glVertex3f(s, -s, -s); + + glTexCoord2f(0, 1); + glNormal3f(0.0, 0.0, 1.0); + glVertex3f(s, s, -s); + glTexCoord2f(1, 1); + glNormal3f(0.0, 0.0, 1.0); + glVertex3f(-s, s, -s); + + glTexCoord2f(1, 0); + glNormal3f(0.0, 0.0, 1.0); + glVertex3f(-s, -s, -s); + + glEnd(); + + // Render the left quad + // glBindTexture(GL_TEXTURE_2D, _skybox[1]); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); + glVertex3f(s, -s, s); + glTexCoord2f(0, 1); + glVertex3f(s, s, s); + glTexCoord2f(1, 1); + glVertex3f(s, s, -s); + glTexCoord2f(1, 0); + glVertex3f(s, -s, -s); + glEnd(); + + // Render the back quad + // glBindTexture(GL_TEXTURE_2D, _skybox[2]); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); + glVertex3f(-s, -s, s); + glTexCoord2f(0, 1); + glVertex3f(-s, s, s); + glTexCoord2f(1, 1); + glVertex3f(s, s, s); + glTexCoord2f(1, 0); + glVertex3f(s, -s, s); + + glEnd(); + + // Render the right quad + // glBindTexture(GL_TEXTURE_2D, _skybox[3]); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); + glVertex3f(-s, -s, -s); + glTexCoord2f(0, 1); + glVertex3f(-s, s, -s); + glTexCoord2f(1, 1); + glVertex3f(-s, s, s); + glTexCoord2f(1, 0); + glVertex3f(-s, -s, s); + glEnd(); + + // Render the top quad + //glBindTexture(GL_TEXTURE_2D, _skybox[4]); + glBegin(GL_QUADS); + glTexCoord2f(0, 1); + glVertex3f(-s, s, -s); + + glTexCoord2f(1, 1); + glVertex3f(s, s, -s); + + glTexCoord2f(1, 0); + glVertex3f(s, s, s); + + glTexCoord2f(0, 0); + glVertex3f(-s, s, s); + + glEnd(); + + // Render the bottom quad + //glBindTexture(GL_TEXTURE_2D, _skybox[5]); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); + glVertex3f(-s, -s, -s); + glTexCoord2f(0, 1); + glVertex3f(-s, -s, s); + glTexCoord2f(1, 1); + glVertex3f(s, -s, s); + glTexCoord2f(1, 0); + glVertex3f(s, -s, -s); + glEnd(); + + // Restore enable bits and matrix + glPopAttrib(); + glPopMatrix(); +} + class Application { public: void initialize(int argc, char ** argv); @@ -728,6 +856,8 @@ void Application::update() { for (size_t i = 0; i < GAME_POINT_COUNT; i++) draw_point(&game.point[i]); + draw_box(); + glDisable(GL_LIGHT0); glDisable(GL_LIGHTING); glDisable(GL_CULL_FACE);