/* * (c) Copyright 1995-1999, Igor Tarasov * FidoNet: 2:5020/370.2 620.20 1103.5 * Inet: itarasov@rtuis.miem.edu.ru * Phone: (095)942-50-97 */ #include #include #include #include void CALLBACK resize(int width,int height) { glViewport(0,0,width,height); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glOrtho(-5,5, -5,5, 2,12); gluLookAt( 0,0,5, 0,0,0, 0,1,0 ); glMatrixMode( GL_MODELVIEW ); } void CALLBACK display(void) { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glPushMatrix(); glTranslated(0.5,4,0); glColor3d(0,0,1); auxSolidCube(1); // куб glTranslated(0,-2,0); glColor3d(0,1,0); auxSolidBox(1,0.75,0.5); // коробка glTranslated(0,-2,0); glColor3d(0,1,1); auxSolidTorus(0.2,0.5); // тор glTranslated(0,-2,0); glColor3d(1,0,0); auxSolidCylinder(0.5,1); // цилиндер glTranslated(0,-2,0); glColor3d(0,1,0); auxSolidCone(1,1); // конус glTranslated(2,8,0); glColor3d(1,0,1); auxSolidIcosahedron(1); // многогранники glTranslated(0,-2,0); glColor3d(1,1,1); auxSolidOctahedron(1); glTranslated(0,-2,0); glColor3d(0,1,1); auxSolidTeapot(0.7); // рисует чайник glTranslated(0,-2,0); glColor3d(0,1,0); auxSolidTetrahedron(1); glTranslated(0,-2,0); glColor3d(1,1,0); auxSolidDodecahedron(1); glTranslated(-6,8,0); glColor3d(0,0,1); auxWireCube(1); // куб glTranslated(0,-2,0); glColor3d(0,1,0); auxWireBox(1,0.75,0.5); // коробка glTranslated(0,-2,0); glColor3d(0,1,1); auxWireTorus(0.2,0.5); // тор glTranslated(0,-2,0); glColor3d(1,0,0); auxWireCylinder(0.5,1); // цилиндер glTranslated(0,-2,0); glColor3d(0,1,0); auxWireCone(1,1); // конус glTranslated(2,8,0); glColor3d(1,0,1); auxWireIcosahedron(1); // многогранники glTranslated(0,-2,0); glColor3d(1,1,1); auxWireOctahedron(1); glTranslated(0,-2,0); glColor3d(0,1,1); auxWireTeapot(0.7); // рисует чайник glTranslated(0,-2,0); glColor3d(0,1,0); auxWireTetrahedron(1); glTranslated(0,-2,0); glColor3d(1,1,0); auxWireDodecahedron(1); glPopMatrix(); auxSwapBuffers(); } void main() { float pos[4] = {3,3,3,1}; float dir[3] = {-1,-1,-1}; auxInitPosition( 50, 10, 400, 400); auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE ); auxInitWindow( "Shapes" ); auxIdleFunc(display); auxReshapeFunc(resize); glEnable(GL_DEPTH_TEST); glEnable(GL_COLOR_MATERIAL); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0, GL_POSITION, pos); glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir); auxMainLoop(display); }