/* Lab exercise on texture mapping Scott D. Anderson Fall 2004 */ #include #include #include /* ================================================================ */ const GLfloat width=1, height=1; // of the texture, in texture space const int NUM_TEXTURES = 6; GLuint textureIDs[NUM_TEXTURES]; void texinit() { glGenTextures(NUM_TEXTURES,textureIDs); twLoadTexture(textureIDs[0],"buffy256.ppm"); twLoadTexture(textureIDs[1],"angel256.ppm"); twLoadTexture(textureIDs[2],"willow256.ppm"); twLoadTexture(textureIDs[3],"xander256.ppm"); twLoadTexture(textureIDs[4],"giles256.ppm"); twLoadTexture(textureIDs[5],"spike256.ppm"); } void display() { twDisplayInit(); twCamera(); glEnable(GL_TEXTURE_2D); // front is buffy glBindTexture(GL_TEXTURE_2D,textureIDs[0]); glBegin(GL_QUADS); glTexCoord2f(0,0); glVertex3f( 0,1,1); glTexCoord2f(0,width); glVertex3f( 0,0,1); glTexCoord2f(height,width); glVertex3f( 1,0,1); glTexCoord2f(height,0); glVertex3f( 1,1,1); glEnd(); // top is angel glBindTexture(GL_TEXTURE_2D,textureIDs[1]); glBegin(GL_QUADS); glTexCoord2f(0,0); glVertex3f( 0,1,1); glTexCoord2f(0,width); glVertex3f( 1,1,1); glTexCoord2f(height,width); glVertex3f( 1,1,0); glTexCoord2f(height,0); glVertex3f( 0,1,0); glEnd(); // left is willow glBindTexture(GL_TEXTURE_2D,textureIDs[2]); glBegin(GL_QUADS); glTexCoord2f(0,0); glVertex3f( 0,1,1); glTexCoord2f(0,width); glVertex3f( 0,1,0); glTexCoord2f(height,width); glVertex3f( 0,0,0); glTexCoord2f(height,0); glVertex3f( 0,0,1); glEnd(); // right is xander glBindTexture(GL_TEXTURE_2D,textureIDs[3]); glBegin(GL_QUADS); glTexCoord2f(0,0); glVertex3f( 1,0,0); glTexCoord2f(0,width); glVertex3f( 1,0,1); glTexCoord2f(height,width); glVertex3f( 1,1,1); glTexCoord2f(height,0); glVertex3f( 1,1,0); glEnd(); // back is giles glBindTexture(GL_TEXTURE_2D,textureIDs[4]); glBegin(GL_QUADS); glTexCoord2f(0,0); glVertex3f( 1,0,0); glTexCoord2f(0,width); glVertex3f( 1,1,0); glTexCoord2f(height,width); glVertex3f( 0,1,0); glTexCoord2f(height,0); glVertex3f( 0,0,0); glEnd(); // bottom is spike glBindTexture(GL_TEXTURE_2D,textureIDs[5]); glBegin(GL_QUADS); glTexCoord2f(0,0); glVertex3f( 1,0,0); glTexCoord2f(0,width); glVertex3f( 0,0,0); glTexCoord2f(height,width); glVertex3f( 0,1,0); glTexCoord2f(height,0); glVertex3f( 1,1,0); glEnd(); glFlush(); glutSwapBuffers(); } /* ================================================================ */ int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); twInitWindowSize(500, 500); glutCreateWindow(argv[0]); glutDisplayFunc(display); twBoundingBox(0,1,0,1,0,1); twMainInit(); texinit(); glutMainLoop(); }