#include // Prototypes void brass(); void silver(); GLfloat light_position[] = {10.0f, 10.0f, 10.0f, 1.0f}; GLfloat diffuse_light[] = {0.9f, 0.9, 0.9f, 0.0f}; // brass material 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.00, 0.0, 1.0}; GLfloat brass_shininess = 27.8; // Silver GLfloat brass1_ambient[]={0.33, 0.33, 0.33, 1.0}; GLfloat brass1_diffuse[]={0.78, 0.78, 0.78, 1.0}; GLfloat brass1_specular[]={0.99, 0.99, 0.99, 1.0}; GLfloat brass1_shininess = 27.8; float degree = 0.0f; void paint () { glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); glTranslatef (0, -2, -15); brass(); glutSolidTeapot (1); glPushMatrix(); glRotatef (degree, 0, 1, 0); glTranslatef (0, 0, 5); glRotatef (-degree, 0, 1, 0); //glLightfv (GL_LIGHT0, GL_POSITION, light_position); glScalef (0.5, 0.5, 0.5); silver(); glutSolidTeapot (1); // earth glPushMatrix(); glRotatef (degree*3, 0, 1, 0); glTranslatef (0, 0, 3); glScalef (0.1, 0.1, 0.1); glutSolidTeapot (1); glPopMatrix(); glPopMatrix(); glPopMatrix(); glFlush(); glutSwapBuffers(); degree += 0.1f; glutPostRedisplay(); } void brass() { glMaterialfv(GL_FRONT, GL_AMBIENT, brass_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, brass_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, brass_specular); glMaterialf(GL_FRONT, GL_SHININESS, brass_shininess); } void silver() { glMaterialfv(GL_FRONT, GL_AMBIENT, brass1_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, brass1_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, brass1_specular); glMaterialf(GL_FRONT, GL_SHININESS, brass1_shininess); } void doLights() { glEnable (GL_LIGHTING); glEnable (GL_LIGHT0); glLightfv (GL_LIGHT0, GL_POSITION, light_position); glLightfv (GL_LIGHT0, GL_DIFFUSE, diffuse_light); } void doCamera() { // Setup viewing glMatrixMode (GL_PROJECTION); glLoadIdentity(); gluPerspective (60.0f, 1.5, 0.1, 1000); glMatrixMode (GL_MODELVIEW); } int main (int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); glutCreateWindow ("June 8th, 2006"); glEnable (GL_DEPTH_TEST); doCamera(); doLights(); glutDisplayFunc (paint); glutMainLoop(); }