#include #include #define GLUT_DISABLE_ATEXIT_HACK #include void init(void) { GLfloat mat_specular[] = { 0.0, 0.0, 0.0, 0.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat light_position[] = { 0.0, 0.0, 2.0, 0.0}; glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_SMOOTH); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_DEPTH_TEST); } void sphere1() { glMatrixMode (GL_MODELVIEW); float z = 10.0f; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glRotatef(z, 0.0f, 1.0f, 0.0f); glutSolidSphere (0.5, 400, 400); glutSwapBuffers(); } void sphere2() { glMatrixMode (GL_MODELVIEW); float z = 10.0f; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glRotatef(z, 0.0f, 1.0f, 0.0f); glutSolidSphere (0.5, 400, 400); glutSwapBuffers(); } void drawStuff() { sphere1(); sphere2(); } void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); glLoadIdentity(); //glTranslatef(0.0, 0.5, 0.0); if (w <= h) glOrtho (-1.5, 1.5, -1.5*(GLfloat)h/(GLfloat)w, 1.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0); else glOrtho (-1.5*(GLfloat)w/(GLfloat)h, 1.5*(GLfloat)w/(GLfloat)h, -1.5, 1.5, -10.0, 10.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize (500, 500); glutInitWindowPosition (100, 100); glutCreateWindow (argv[0]); init (); glutIdleFunc(drawStuff); glutDisplayFunc(drawStuff); glutReshapeFunc(reshape); glutMainLoop(); return 0; }