#include #include void myInit() { glEnable(GL_DEPTH_TEST); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_NORMALIZE); glShadeModel(GL_SMOOTH); GLfloat light_diffuse[] = { 1.0 , 1.0 , 1.0 , 1.0 }; GLfloat light_specular[] = { 1.0 , 1.0 , 1.0 , 1.0 }; GLfloat light_ambient[] = { 0.2 , 0.2 , 0.2 , 1.0 }; GLfloat light_position[] = { -1,1,1 , 0 }; glLightfv(GL_LIGHT0 , GL_POSITION , light_position); glLightfv(GL_LIGHT0 , GL_DIFFUSE , light_diffuse); glLightfv(GL_LIGHT0 , GL_AMBIENT , light_ambient); glLightfv(GL_LIGHT0 , GL_SPECULAR , light_specular); glClearColor( 0.3 , 0.3 , 0.8 , 1.0 ); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-1.5,1.5,-1.5,1.5,-10,20.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0,0,5 , 0,0,0 , 0,1,0); } void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3f(0.0 , 0.0 , 0.0); //black plastic glViewport(0,400,200,200); GLfloat mat_ambient[] = { 0.0 , 0.0 , 0.0 , 1.0 }; GLfloat mat_diffuse[] = { 0.01 , 0.01 , 0.01 , 1.0 }; GLfloat mat_specular[] = {0.5 , 0.5 , 0.5, 1.0 }; GLfloat mat_shininess[] = { 32 }; glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glutSolidTeapot(1.0); //brass glViewport(200,400,200,200); mat_ambient[0]=0.329412 ; mat_ambient[1]=0.223529 ; mat_ambient[2]=0.027451; mat_diffuse[0]=0.780392 ; mat_diffuse[1]=0.568627 ; mat_diffuse[2]=0.113725; mat_specular[0]=0.992157; mat_specular[1]=0.941176; mat_specular[2]=0.807843; mat_shininess[0]=27.8974; glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glutSolidTeapot(1.0); //bronze glViewport(400,400,200,200); mat_ambient[0]=0.2125 ; mat_ambient[1]=0.1275 ; mat_ambient[2]=0.054; mat_diffuse[0]=0.714 ; mat_diffuse[1]=0.4284 ; mat_diffuse[2]=0.18144; mat_specular[0]=0.393548; mat_specular[1]=0.271906; mat_specular[2]=0.166721; mat_shininess[0]=25.6; glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glutSolidTeapot(1.0); //chrome glViewport(0,200,200,200); mat_ambient[0]=0.25 ; mat_ambient[1]=0.25 ; mat_ambient[2]=0.25; mat_diffuse[0]=0.4 ; mat_diffuse[1]=0.4 ; mat_diffuse[2]=0.4; mat_specular[0]=0.774597; mat_specular[1]=0.774597; mat_specular[2]=0.774597; mat_shininess[0]=76.8; glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glutSolidTeapot(1.0); //copper glViewport(200,200,200,200); mat_ambient[0]=0.19125 ; mat_ambient[1]=0.0735 ; mat_ambient[2]=0.0225; mat_diffuse[0]=0.7038 ; mat_diffuse[1]=0.27048 ; mat_diffuse[2]=0.0828; mat_specular[0]=0.256777; mat_specular[1]=0.137622; mat_specular[2]=0.086014; mat_shininess[0]=12.8; glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glutSolidTeapot(1.0); //gold glViewport(400,200,200,200); mat_ambient[0]=0.24725 ; mat_ambient[1]=0.1995 ; mat_ambient[2]=0.0745; mat_diffuse[0]=0.75164 ; mat_diffuse[1]=0.60648 ; mat_diffuse[2]=0.22648; mat_specular[0]=0.628281; mat_specular[1]=0.555802; mat_specular[2]=0.366065; mat_shininess[0]=51.2; glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glutSolidTeapot(1.0); //pewter glViewport(0,0,200,200); mat_ambient[0]=0.10588 ; mat_ambient[1]=0.058824 ; mat_ambient[2]=0.113725; mat_diffuse[0]=0.427451 ; mat_diffuse[1]=0.470588 ; mat_diffuse[2]=0.541176; mat_specular[0]=0.3333; mat_specular[1]=0.3333; mat_specular[2]=0.521569; mat_shininess[0]=9.84615; glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glutSolidTeapot(1.0); //silver glViewport(200,0,200,200); mat_ambient[0]=0.19225 ; mat_ambient[1]=0.19225 ; mat_ambient[2]=0.19225; mat_diffuse[0]=0.50754 ; mat_diffuse[1]=0.50754 ; mat_diffuse[2]=0.50754; mat_specular[0]=0.508273; mat_specular[1]=0.508273; mat_specular[2]=0.508273; mat_shininess[0]=51.2; glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glutSolidTeapot(1.0); //polished silver glViewport(400,0,200,200); mat_ambient[0]=0.23125 ; mat_ambient[1]=0.23125 ; mat_ambient[2]=0.23125; mat_diffuse[0]=0.2775 ; mat_diffuse[1]=0.2775 ; mat_diffuse[2]=0.2775; mat_specular[0]=0.773911; mat_specular[1]=0.773911; mat_specular[2]=0.773911; mat_shininess[0]=89.6; glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glutSolidTeapot(1.0); glFlush(); } void keyboard(unsigned char key, GLint x, GLint y) { switch (key) { case 'q': exit( 0 ); break; } return; } int main (int argc , char **argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(600,600); glutInitWindowPosition(0,0); glutCreateWindow("Material Settings"); myInit(); glutDisplayFunc(display); glutKeyboardFunc(keyboard); glutMainLoop(); return 0; }