Main Page | File List

gl.cpp

00001 #include <cstdlib>
00002 #include <GL/glut.h>
00003 
00004 
00005 int main_window;
00006 
00007 
00008 void init(void)
00009 {    
00010    glClearColor (0.0, 0.0, 0.0, 0.0);
00011    glShadeModel(GL_SMOOTH);
00012    glEnable(GL_DEPTH_TEST);
00013 
00014    GLfloat position[] = { 3.0, .0, 1.0, 1.0 };
00015 
00016    glClearColor(0.0, 0.1, 0.1, 0.0);
00017    glEnable(GL_DEPTH_TEST);
00018    glShadeModel(GL_SMOOTH);
00019 
00020    glLightfv(GL_LIGHT0, GL_POSITION, position);
00021 
00022    glEnable(GL_LIGHTING);
00023    glEnable(GL_LIGHT0);
00024 }
00025 
00026 
00027 void display(void)
00028 {
00029   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
00030 
00031   glMatrixMode(GL_MODELVIEW);
00032   glLoadIdentity();
00033 
00034   glTranslatef(0,0,-2);
00035   glutSolidTorus (0.275, 0.85, 8, 15);
00036 
00037   glutSwapBuffers();
00038 }
00039 
00040 
00041 void reshape(int w, int h)
00042 {
00043   glViewport(0, 0, (GLsizei) w, (GLsizei) h);
00044 
00045   glMatrixMode(GL_PROJECTION);
00046   glLoadIdentity();
00047   gluPerspective(70.0, (GLfloat) w/(GLfloat) h, .5, 30.0);
00048 }
00049 
00050 
00051 void myGlutIdle( void )
00052 {
00053   /* According to the GLUT specification, the current window is 
00054      undefined during an idle callback.  So we need to explicitly change
00055      it if necessary */
00056   if ( glutGetWindow() != main_window ) 
00057     glutSetWindow(main_window);  
00058 
00059   glutPostRedisplay();
00060 }
00061 
00062 void keyboard(unsigned char key, int x, int y)
00063 {
00064   if(key == 'q' || key == 'Q')
00065     exit(0);
00066 }
00067 
00068 
00069 
00070 void mouse(int button, int state, int x, int y) 
00071 {
00072   if (button == GLUT_LEFT_BUTTON) {
00073     if (state == GLUT_DOWN) {
00074       // do something...
00075     }
00076   }
00077   
00078 }
00079  
00080 
00081 int main(int argc, char** argv)
00082 {
00083    glutInit(&argc, argv);
00084    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
00085    glutInitWindowSize(512, 512);
00086    glutInitWindowPosition(100, 100);
00087    main_window = glutCreateWindow(argv[0]);
00088 
00089    init();
00090 
00091    glutDisplayFunc(display);
00092    glutReshapeFunc(reshape);
00093    glutIdleFunc( myGlutIdle );
00094 
00095    glutMouseFunc(mouse);
00096 
00097    glutKeyboardFunc(keyboard);
00098 
00099    glutMainLoop();
00100    return 0; 
00101 }

Generated on Tue Jul 20 16:28:39 2004 by doxygen 1.3.6