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

GIS编程

开发平台:

Visual C++

  1. #ifndef __glsmapint_h__
  2. #define __glsmapint_h__
  3. /* Copyright (c) Mark J. Kilgard, 1998. */
  4. /* This program is freely distributable without licensing fees 
  5.    and is provided without guarantee or warrantee expressed or 
  6.    implied. This program is -not- in the public domain. */
  7. #include <GL/glsmap.h>
  8. enum { X = 0, Y = 1, Z = 2 };
  9. #define INITFACE(mesh) 
  10. int steps = mesh->steps; 
  11. int sqsteps = mesh->steps * mesh->steps
  12. #define FACE(side,y,x) 
  13. mesh->face[(side)*sqsteps + (y)*steps + (x)]
  14. #define FACExy(side,i,j) 
  15. (&FACE(side,i,j).x)
  16. #define FACEst(side,i,j) 
  17. (&FACE(side,i,j).s)
  18. #define INITBACK(mesh) 
  19. int allrings = mesh->rings + mesh->edgeExtend; 
  20. int ringedspokes = allrings * mesh->steps
  21. #define BACK(edge,ring,spoke) 
  22. mesh->back[(edge)*ringedspokes + (ring)*mesh->steps + (spoke)]
  23. #define BACKxy(edge,ring,spoke) 
  24. (&BACK(edge,ring,spoke).x)
  25. #define BACKst(edge,ring,spoke) 
  26. (&BACK(edge,ring,spoke).s)
  27. typedef struct _STXY {
  28. GLfloat s, t;
  29. GLfloat x, y;
  30. } STXY;
  31. typedef struct _SphereMapMesh {
  32. int refcnt;
  33. int steps;
  34. int rings;
  35. int edgeExtend;
  36. STXY *face;
  37. STXY *back;
  38. } SphereMapMesh;
  39. struct _SphereMap {
  40. /* Shared sphere map mesh vertex data. */
  41. SphereMapMesh *mesh;
  42. /* Texture object ids. */
  43. GLuint smapTexObj;
  44. GLuint viewTexObjs[6];
  45. GLuint viewTexObj;
  46.         /* Flags */
  47.         SphereMapFlags flags;
  48. /* Texture dimensions must be a power of two. */
  49. int viewTexDim;  /* view texture dimension */
  50. int smapTexDim;  /* sphere map texture dimension */
  51. /* Viewport origins for view and sphere map rendering. */
  52. int viewOrigin[2];
  53. int smapOrigin[2];
  54. /* Viewing vectors. */
  55. GLfloat eye[3];
  56. GLfloat up[3];
  57. GLfloat obj[3];
  58. /* Projection parameters. */
  59. GLfloat viewNear;
  60. GLfloat viewFar;
  61. /* Rendering callbacks. */
  62. void (*positionLights)(int view, void *context);
  63. void (*drawView)(int view, void *context);
  64. /* Application specified callback data. */
  65. void *context;
  66. };
  67. /* Library internal routines. */
  68. extern void __smapDrawSphereMapMeshSide(SphereMapMesh *mesh, int side);
  69. extern void __smapDrawSphereMapMeshBack(SphereMapMesh *mesh);
  70. extern void __smapValidateSphereMapMesh(SphereMapMesh *mesh);
  71. #endif /* __glsmapint_h__ */