Main Page | File List

gl.cpp

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

Generated on Tue Aug 10 11:12:23 2004 by doxygen 1.3.6