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

GIS编程

开发平台:

Visual C++

  1. /* Copyright (c) Mark J. Kilgard, 1998.  */
  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. /* drawmesh.c - draws mesh for constructing a sphere map */
  6. #include <GL/glut.h>
  7. #include "smapmesh.h"
  8. #if defined(GL_EXT_texture_object) && !defined(GL_VERSION_1_1)
  9. #define glBindTexture(A,B)     glBindTextureEXT(A,B)
  10. #endif
  11. void
  12. drawSphereMapMesh(GLuint texobj[6])
  13. {
  14. int side, i, j;
  15. /* five front and side faces */
  16. for (side=0; side<5; side++) {
  17. /* bind to texture for given face of cube map */
  18. glBindTexture(GL_TEXTURE_2D, texobj[side]);
  19. for (i=0; i<YSTEPS-1; i++) {
  20. glBegin(GL_QUAD_STRIP);
  21. for (j=0; j<XSTEPS; j++) {
  22. glTexCoord2fv (&face[side][i][j].s);
  23. glVertex2fv   (&face[side][i][j].x);
  24. glTexCoord2fv (&face[side][i+1][j].s);
  25. glVertex2fv   (&face[side][i+1][j].x);
  26. }
  27. glEnd();
  28. }
  29. }
  30. /* Back face specially rendered for its singularity! */
  31. /* Bind to texture for back face of cube map. */
  32. glBindTexture(GL_TEXTURE_2D, texobj[side]);
  33. for (side=0; side<4; side++) {
  34. for (j=0; j<RINGS-1+EDGE_EXTEND; j++) {
  35. glBegin(GL_QUAD_STRIP);
  36. for (i=0; i<SPOKES; i++) {
  37. glTexCoord2fv (&back[side][j][i].s);
  38. glVertex2fv   (&back[side][j][i].x);
  39. glTexCoord2fv (&back[side][j+1][i].s);
  40. glVertex2fv   (&back[side][j+1][i].x);
  41. }
  42. glEnd();
  43. }
  44. }
  45. }