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
00054
00055
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
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 }