mainsimple.c
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:2k
源码类别:

GIS编程

开发平台:

Visual C++

  1. /* 
  2.  * FUNCTION:
  3.  * very minimal "main()" for GL demos.
  4.  *
  5.  * HISTORY:
  6.  * Linas Vepstas March 1995
  7.  */
  8. /* required include files */
  9. #include <stdlib.h>
  10. #include <GL/glut.h>
  11. extern void DrawStuff (void);
  12. extern void InitStuff (void);
  13. float lastx=0;
  14. float lasty=0;
  15. /* get notified of mouse motions */
  16. void MouseMotion (int x, int y)
  17. {
  18.    lastx = x;
  19.    lasty = y;
  20.    glutPostRedisplay ();
  21. }
  22. /* ARGSUSED */
  23. void JoinStyle (int msg) 
  24. {
  25.     exit (0);
  26. }
  27. /* set up a light */
  28. GLfloat lightOnePosition[] = {40.0, 40, 100.0, 0.0};
  29. GLfloat lightOneColor[] = {0.99, 0.99, 0.99, 1.0}; 
  30. GLfloat lightTwoPosition[] = {-40.0, 40, 100.0, 0.0};
  31. GLfloat lightTwoColor[] = {0.99, 0.99, 0.99, 1.0}; 
  32. int
  33. main (int argc, char * argv[]) {
  34.    /* initialize glut */
  35.    glutInit (&argc, argv);
  36.    glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
  37.    glutCreateWindow ("basic demo");
  38.    glutDisplayFunc (DrawStuff);
  39.    glutMotionFunc (MouseMotion);
  40.    /* create popup menu */
  41.    glutCreateMenu (JoinStyle);
  42.    glutAddMenuEntry ("Exit", 99);
  43.    glutAttachMenu (GLUT_MIDDLE_BUTTON);
  44.    /* initialize GL */
  45.    glClearDepth (1.0);
  46.    glEnable (GL_DEPTH_TEST);
  47.    glClearColor (0.0, 0.0, 0.0, 0.0);
  48.    glShadeModel (GL_SMOOTH);
  49.    glMatrixMode (GL_PROJECTION);
  50.    /* roughly, measured in centimeters */
  51.    glFrustum (-9.0, 9.0, -9.0, 9.0, 50.0, 150.0);
  52.    glMatrixMode(GL_MODELVIEW);
  53.    /* initialize lighting */
  54.    glLightfv (GL_LIGHT0, GL_POSITION, lightOnePosition);
  55.    glLightfv (GL_LIGHT0, GL_DIFFUSE, lightOneColor);
  56.    glEnable (GL_LIGHT0);
  57.    glLightfv (GL_LIGHT1, GL_POSITION, lightTwoPosition);
  58.    glLightfv (GL_LIGHT1, GL_DIFFUSE, lightTwoColor);
  59.    glEnable (GL_LIGHT1);
  60.    glEnable (GL_LIGHTING);
  61.    glColorMaterial (GL_FRONT_AND_BACK, GL_DIFFUSE);
  62.    glEnable (GL_COLOR_MATERIAL);
  63.    InitStuff ();
  64.    glutMainLoop ();
  65.    return 0;             /* ANSI C requires main to return int. */
  66. }