#include GLfloat light_position[] = {00.0f, 0.0f, 100.0f, 0.0f}; // Setup diffuse property GLfloat diffuse_light[] = {0.9f, 0.9f, 0.9f, 0.0f}; // Setup ambient property GLfloat ambient_light[] = {0.2f, 0.2f, 0.2f, 0.0f}; // Setup specular property GLfloat specular_light[] = {0.5f, 0.5f, 0.5f, 0.0f}; GLfloat brass_ambient[]={0.33, 0.22, 0.03, 1.0}; GLfloat brass_diffuse[]={0.78, 0.57, 0.11, 1.0}; GLfloat brass_specular[]={0.99, 0.91, 0.81, 1.0}; GLfloat brass_shininess = 27.8; float deg = 0; GLubyte myimage[64][64][3]; GLubyte yourimage[64][64][3]; GLuint myid = 0; GLuint yourid = 0; void initImage() { int c; for (int i = 0; i < 64; i++) { for (int j = 0; j < 64; j++) { c = ((((i&0x8)==0)^((j&0x8))==0))*255; myimage[i][j][0] = (GLubyte) c; myimage[i][j][1] = (GLubyte) c; myimage[i][j][2] = (GLubyte) c; yourimage[i][j][0] = rand()%255; yourimage[i][j][1] = rand()%255; yourimage[i][j][2] = rand()%255; } } } /* glBegin (GL_QUADS); glTexCoord2f (0.0, 0.0); glVertex3f(-1.0f, -1.0f, 0.0f); glTexCoord2f (0.0, 2.0); glVertex3f(-1.0f, 1.0f, 0.0f); glTexCoord2f (2.0, 2.0); glVertex3f(1.0f, 1.0f, 0.0f); glTexCoord2f(2.0, 0.0f); glVertex3f(1.0f, -1.0f, 0.0f); glEnd(); glBegin (GL_QUADS); glTexCoord2f (0.0, 0.0); glVertex3f(-2.0f, -2.0f, 0.0f); glTexCoord2f (0.0, 2.0); glVertex3f(-2.0f, 0.0f, 0.0f); glTexCoord2f (2.0, 2.0); glVertex3f(0.0f, 0.0f, 0.0f); glTexCoord2f(2.0, 0.0f); glVertex3f(0.0f, -2.0f, 0.0f); glEnd(); */ void display() { glClear (GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glEnable(GL_TEXTURE_2D); glPushMatrix(); glTranslatef(-0.5, -0.4, -1.0); glRasterPos2f(0, 0); glPopMatrix(); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); glTranslatef(-1.0, 0.0, -5.0); glPushMatrix(); glRotatef (deg, 0.0, 1.0, 0.0); glBindTexture(GL_TEXTURE_2D, myid); glutSolidTeapot (1.0); glPopMatrix(); glPushMatrix(); glTranslatef(2.0, 0.0, 0.0); glRotatef(deg, 0.0, 1.0, 0.0); glBindTexture(GL_TEXTURE_2D, yourid); glutSolidTeapot (1.0); glPopMatrix(); glPopMatrix(); glutSwapBuffers(); glFlush(); glDisable (GL_TEXTURE_2D); } void idleFunc() { deg += 0.3; glutPostRedisplay(); } void setupLights() { glEnable (GL_LIGHTING); glEnable (GL_LIGHT0); glLightfv (GL_LIGHT0, GL_POSITION, light_position); glLightfv (GL_LIGHT0, GL_DIFFUSE, diffuse_light); glLightfv (GL_LIGHT0, GL_AMBIENT, ambient_light); glLightfv (GL_LIGHT0, GL_SPECULAR, specular_light); } void setupCamera() { glMatrixMode (GL_PROJECTION); glLoadIdentity(); gluPerspective(60.0f, 1.0f, 0.1f, 1000.0f); glMatrixMode (GL_MODELVIEW); } void setupWindow() { glutInitDisplayMode (GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH); glutInitWindowPosition(30, 30); glutInitWindowSize (500, 500); glutCreateWindow ("Texture Objects"); glEnable(GL_DEPTH_TEST); glutDisplayFunc(display); glutIdleFunc(idleFunc); } void main (int argv, char** argc) { initImage(); glutInit(&argv, argc); setupWindow(); setupCamera(); setupLights(); // Get a number glGenTextures (5, &myid); // Start binding a texture, and store on graphics card glBindTexture (GL_TEXTURE_2D, myid); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 64, 64, 0, GL_RGB, GL_UNSIGNED_BYTE, myimage); 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_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); // All the way down to here // Get a second number glGenTextures (5, &yourid); // Start recording, and store on graphics card glBindTexture (GL_TEXTURE_2D, yourid); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 64, 64, 0, GL_RGB, GL_UNSIGNED_BYTE, yourimage); 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_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); // All the way down to here glutMainLoop(); }