| 1 |  | 
|---|
| 2 |  | 
|---|
| 3 | #include <GL/glut.h> | 
|---|
| 4 |  | 
|---|
| 5 | #include <stdio.h> | 
|---|
| 6 | #include <stdlib.h> | 
|---|
| 7 | #include <math.h> | 
|---|
| 8 |  | 
|---|
| 9 | static float alpha = 0; | 
|---|
| 10 |  | 
|---|
| 11 | void init(void) { | 
|---|
| 12 |  | 
|---|
| 13 |   glClearColor(0.0, 0.0, 0.0, 0.0); | 
|---|
| 14 |   glShadeModel(GL_FLAT); | 
|---|
| 15 | } | 
|---|
| 16 |  | 
|---|
| 17 |  | 
|---|
| 18 | void display(void) { | 
|---|
| 19 |  | 
|---|
| 20 |   glClear(GL_COLOR_BUFFER_BIT); | 
|---|
| 21 |   glColor3f(1.0, 1.0, 1.0); | 
|---|
| 22 |   glLoadIdentity(); | 
|---|
| 23 |    | 
|---|
| 24 |   gluLookAt(5*cos(alpha), 5*sin(alpha), 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); | 
|---|
| 25 |   glScalef(1.0, 2.0, 1.0); | 
|---|
| 26 |   glutWireCube(1.0); | 
|---|
| 27 |   glFlush(); | 
|---|
| 28 | } | 
|---|
| 29 |  | 
|---|
| 30 |  | 
|---|
| 31 | void reshape(int w, int h) { | 
|---|
| 32 |  | 
|---|
| 33 |   glViewport(0, 0, (GLsizei) w, (GLsizei)h); | 
|---|
| 34 |   glMatrixMode(GL_PROJECTION); | 
|---|
| 35 |   glLoadIdentity(); | 
|---|
| 36 |   glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 20.0); | 
|---|
| 37 |   glMatrixMode(GL_MODELVIEW); | 
|---|
| 38 | } | 
|---|
| 39 |  | 
|---|
| 40 |  | 
|---|
| 41 | void spinDisplay( void ) { | 
|---|
| 42 |  | 
|---|
| 43 |   alpha = alpha + 0.01; | 
|---|
| 44 |   if (alpha > 360) | 
|---|
| 45 |     alpha = 0; | 
|---|
| 46 |   glutPostRedisplay(); | 
|---|
| 47 | } | 
|---|
| 48 |  | 
|---|
| 49 |  | 
|---|
| 50 | void mouse( int button, int state, int x, int y ) { | 
|---|
| 51 |  | 
|---|
| 52 |   switch( button ) { | 
|---|
| 53 |   case GLUT_LEFT_BUTTON: | 
|---|
| 54 |     if (state == GLUT_DOWN) { | 
|---|
| 55 |       glutIdleFunc(spinDisplay); | 
|---|
| 56 |     } | 
|---|
| 57 |     break; | 
|---|
| 58 |   case GLUT_RIGHT_BUTTON: | 
|---|
| 59 |     if (state == GLUT_DOWN) { | 
|---|
| 60 |       glutIdleFunc(NULL); | 
|---|
| 61 |     } | 
|---|
| 62 |     break; | 
|---|
| 63 |   default: | 
|---|
| 64 |     break; | 
|---|
| 65 |   } | 
|---|
| 66 | } | 
|---|
| 67 |  | 
|---|
| 68 |  | 
|---|
| 69 |  | 
|---|
| 70 | int main(int argc, char** argv) { | 
|---|
| 71 |  | 
|---|
| 72 |   glutInit(&argc, argv); | 
|---|
| 73 |   glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); | 
|---|
| 74 |   glutInitWindowSize(500, 500); | 
|---|
| 75 |   glutInitWindowPosition(100, 100); | 
|---|
| 76 |   glutCreateWindow(argv[0]); | 
|---|
| 77 |   init(); | 
|---|
| 78 |   glutDisplayFunc(display); | 
|---|
| 79 |   glutReshapeFunc(reshape); | 
|---|
| 80 |   glutMouseFunc(mouse); | 
|---|
| 81 |   glutMainLoop(); | 
|---|
| 82 |  | 
|---|
| 83 |   return 0; | 
|---|
| 84 | } | 
|---|
| 85 |  | 
|---|
| 86 |  | 
|---|
| 87 | //EOF | 
|---|