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

GIS编程

开发平台:

Visual C++

  1. /* Copyright (c) Mark J. Kilgard, 1994. */
  2. /* This program is freely distributable without licensing fees 
  3.    and is provided without guarantee or warrantee expressed or 
  4.    implied. This program is -not- in the public domain. */
  5. #include <GL/glut.h>
  6. GLfloat light_diffuse[] =
  7. {1.0, 0.0, 0.0, 1.0};
  8. GLfloat light_position[] =
  9. {1.0, 1.0, 1.0, 0.0};
  10. GLUquadricObj *qobj;
  11. void
  12. display(void)
  13. {
  14.   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  15.   glCallList(1);        /* render sphere display list */
  16.   glutSwapBuffers();
  17. }
  18. void
  19. gfxinit(void)
  20. {
  21.   qobj = gluNewQuadric();
  22.   gluQuadricDrawStyle(qobj, GLU_FILL);
  23.   glNewList(1, GL_COMPILE);  /* create sphere display list */
  24.   gluSphere(qobj, /* radius */ 1.0, /* slices */ 20,
  25.   /* stacks */ 20);
  26.   glEndList();
  27.   glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
  28.   glLightfv(GL_LIGHT0, GL_POSITION, light_position);
  29.   glEnable(GL_LIGHTING);
  30.   glEnable(GL_LIGHT0);
  31.   glEnable(GL_DEPTH_TEST);
  32.   glMatrixMode(GL_PROJECTION);
  33.   gluPerspective( /* field of view in degree */ 40.0,
  34.   /* aspect ratio */ 1.0,
  35.     /* Z near */ 1.0, /* Z far */ 10.0);
  36.   glMatrixMode(GL_MODELVIEW);
  37.   gluLookAt(0.0, 0.0, 5.0,  /* eye is at (0,0,5) */
  38.     0.0, 0.0, 0.0,      /* center is at (0,0,0) */
  39.     0.0, 1.0, 0.);      /* up is in positive Y direction */
  40.   glTranslatef(0.0, 0.0, -1.0);
  41. }
  42. int
  43. main(int argc, char **argv)
  44. {
  45.   glutInit(&argc, argv);
  46.   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
  47.   glutCreateWindow("sphere");
  48.   glutDisplayFunc(display);
  49.   gfxinit();
  50.   glutCreateWindow("a second window");
  51.   glutDisplayFunc(display);
  52.   gfxinit();
  53.   glutMainLoop();
  54.   return 0;             /* ANSI C requires main to return int. */
  55. }