Code:
int InitGL(GLvoid) // All Setup For OpenGL Goes Here
{
if (!LoadGLTextures()) // Jump To Texture Loading Routine
{
return FALSE; // If Texture Didn't Load Return FALSE
}
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // Clear The Background Color To Black
glClearDepth(1.0); // Enables Clearing Of The Depth Buffer
glEnable(GL_DEPTH_TEST); // Enable Depth Testing
glShadeModel(GL_SMOOTH); // Enables Smooth Color Shading
glEnable(GL_TEXTURE_2D); // Enable 2D Texture Mapping
//glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculations
return TRUE; // Initialization Went OK
}
int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing
{
srand(time(NULL));
int k = 0;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
glLoadIdentity(); // Reset The View
// yrot = yrot+180;
if (lookupdown > 60) lookupdown = 60;
if (lookupdown < -60) lookupdown = -60;
glBindTexture(GL_TEXTURE_2D, texture[4]);
glRotatef(lookupdown,1.0f,0,0);
glRotatef(yrot,0.0f,1.0f,0.0f);
glTranslated(x,0.0,z);
glBegin(GL_QUADS);
// Top Face
glNormal3f( 0.0f,1.0f, 0.0f);
glTexCoord2f(20.0f, 20.0f); glVertex3f(-20.0f, 0.75f, -20.0f);
glTexCoord2f(0.0f, 20.0f); glVertex3f( -2.0f, 0.75f, -20.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( -2.0f, 0.75f, -2.0f);
glTexCoord2f(20.0f, 0.0f); glVertex3f(-20.0f, 0.75f, -2.0f);
glEnd();
glBindTexture(GL_TEXTURE_2D, texture[4]);
glBegin(GL_QUADS);
// Bottom Face
glNormal3f( 0.0f,-1.0f, 0.0f);
glTexCoord2f(20.0f, 20.0f); glVertex3f(-20.0f, -0.75f, -20.0f);
glTexCoord2f(0.0f, 20.0f); glVertex3f( -2.0f, -0.75f, -20.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( -2.0f, -0.75f, -2.0f);
glTexCoord2f(20.0f, 0.0f); glVertex3f(-20.0f, -0.75f, -2.0f);
glEnd();
glTranslatef(-19.0f,0.0f,-19.0f);
for(int i = 0; i < 9; i++)
{
for(int j = 0; j < 10; j++)
{
if(matrix[k] == 2)
{
glBindTexture(GL_TEXTURE_2D, texture[3]);
glBegin(GL_QUADS);
// Front Face
//glNormal3f( 0.0f, 0.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -0.75f, 1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -0.75f, 1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 0.75f, 1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 0.75f, 1.0f);
// Back Face
//glNormal3f( 0.0f, 0.0f,-1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -0.75f, -1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 0.75f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 0.75f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -0.75f, -1.0f);
// Right face
//glNormal3f( 1.0f, 0.0f, 0.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -0.75f, -1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 0.75f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 0.75f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -0.75f, 1.0f);
// Left Face
//glNormal3f(-1.0f, 0.0f, 0.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -0.75f, -1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -0.75f, 1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 0.75f, 1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 0.75f, -1.0f);
glEnd();
}
if(matrix[k] == 1)
{
glBindTexture(GL_TEXTURE_2D, texture[6]);
glBegin(GL_QUADS);
// Front Face
glNormal3f( 0.0f, 0.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -0.75f, 1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -0.75f, 1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 0.75f, 1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 0.75f, 1.0f);
// Back Face
glNormal3f( 0.0f, 0.0f,-1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -0.75f, -1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 0.75f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 0.75f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -0.75f, -1.0f);
// Right face
glNormal3f( 1.0f, 0.0f, 0.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -0.75f, -1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 0.75f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 0.75f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -0.75f, 1.0f);
// Left Face
glNormal3f(-1.0f, 0.0f, 0.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -0.75f, -1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -0.75f, 1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 0.75f, 1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 0.75f, -1.0f);
glEnd();
}
if(matrix[k] == 3)
{
glBindTexture(GL_TEXTURE_2D, texture[5]);
glEnable(GL_BLEND); // Enable Blending
glDisable(GL_DEPTH_TEST); // Disable Depth Testing
glBlendFunc(GL_DST_COLOR,GL_ZERO); // Blend Screen Color With Zero (Black)
glBegin(GL_QUADS);
// Front Face
//glNormal3f( 0.0f, 0.0f, 1.0f);
//glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -0.75f, 1.0f);
//glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -0.75f, 1.0f);
//glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 0.75f, 1.0f);
//glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 0.75f, 1.0f);
// Back Face
glNormal3f( 0.0f, 0.0f,-1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -0.75f, -1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 0.75f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 0.75f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -0.75f, -1.0f);
// Right face
//glNormal3f( 1.0f, 0.0f, 0.0f);
//glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -0.75f, -1.0f);
//glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 0.75f, -1.0f);
//glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 0.75f, 1.0f);
//glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -0.75f, 1.0f);
// Left Face
//glNormal3f(-1.0f, 0.0f, 0.0f);
//glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -0.75f, -1.0f);
//glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -0.75f, 1.0f);
//glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 0.75f, 1.0f);
//glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 0.75f, -1.0f);
glEnd();
glBindTexture(GL_TEXTURE_2D, texture[2]);
glBlendFunc(GL_ONE, GL_ONE); // Copy Image 1 Color To The Screen
glBegin(GL_QUADS);
// Front Face
//glNormal3f( 0.0f, 0.0f, 1.0f);
//glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -0.75f, 1.0f);
//glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -0.75f, 1.0f);
//glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 0.75f, 1.0f);
//glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 0.75f, 1.0f);
// Back Face
glNormal3f( 0.0f, 0.0f,-1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -0.75f, -1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 0.75f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 0.75f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -0.75f, -1.0f);
// Right face
//glNormal3f( 1.0f, 0.0f, 0.0f);
//glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -0.75f, -1.0f);
//glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 0.75f, -1.0f);
//glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 0.75f, 1.0f);
//glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -0.75f, 1.0f);
// Left Face
//glNormal3f(-1.0f, 0.0f, 0.0f);
//glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -0.75f, -1.0f);
//glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -0.75f, 1.0f);
//glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 0.75f, 1.0f);
//glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 0.75f, -1.0f);
glEnd();
glEnable(GL_DEPTH_TEST); // Enable Depth Testing
glDisable(GL_BLEND); // Disable Blendin
}
k++;
glTranslatef(2.0f,0.0f,0.0f);
}
glTranslatef(-20.0f,0.0f,2.0f);
}
return TRUE;// Keep Going
}