glsmapint.h
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:2k
- #ifndef __glsmapint_h__
- #define __glsmapint_h__
- /* Copyright (c) Mark J. Kilgard, 1998. */
- /* This program is freely distributable without licensing fees
- and is provided without guarantee or warrantee expressed or
- implied. This program is -not- in the public domain. */
- #include <GL/glsmap.h>
- enum { X = 0, Y = 1, Z = 2 };
- #define INITFACE(mesh)
- int steps = mesh->steps;
- int sqsteps = mesh->steps * mesh->steps
- #define FACE(side,y,x)
- mesh->face[(side)*sqsteps + (y)*steps + (x)]
- #define FACExy(side,i,j)
- (&FACE(side,i,j).x)
- #define FACEst(side,i,j)
- (&FACE(side,i,j).s)
- #define INITBACK(mesh)
- int allrings = mesh->rings + mesh->edgeExtend;
- int ringedspokes = allrings * mesh->steps
- #define BACK(edge,ring,spoke)
- mesh->back[(edge)*ringedspokes + (ring)*mesh->steps + (spoke)]
- #define BACKxy(edge,ring,spoke)
- (&BACK(edge,ring,spoke).x)
- #define BACKst(edge,ring,spoke)
- (&BACK(edge,ring,spoke).s)
- typedef struct _STXY {
- GLfloat s, t;
- GLfloat x, y;
- } STXY;
- typedef struct _SphereMapMesh {
- int refcnt;
- int steps;
- int rings;
- int edgeExtend;
- STXY *face;
- STXY *back;
- } SphereMapMesh;
- struct _SphereMap {
- /* Shared sphere map mesh vertex data. */
- SphereMapMesh *mesh;
- /* Texture object ids. */
- GLuint smapTexObj;
- GLuint viewTexObjs[6];
- GLuint viewTexObj;
- /* Flags */
- SphereMapFlags flags;
- /* Texture dimensions must be a power of two. */
- int viewTexDim; /* view texture dimension */
- int smapTexDim; /* sphere map texture dimension */
- /* Viewport origins for view and sphere map rendering. */
- int viewOrigin[2];
- int smapOrigin[2];
- /* Viewing vectors. */
- GLfloat eye[3];
- GLfloat up[3];
- GLfloat obj[3];
- /* Projection parameters. */
- GLfloat viewNear;
- GLfloat viewFar;
- /* Rendering callbacks. */
- void (*positionLights)(int view, void *context);
- void (*drawView)(int view, void *context);
- /* Application specified callback data. */
- void *context;
- };
- /* Library internal routines. */
- extern void __smapDrawSphereMapMeshSide(SphereMapMesh *mesh, int side);
- extern void __smapDrawSphereMapMeshBack(SphereMapMesh *mesh);
- extern void __smapValidateSphereMapMesh(SphereMapMesh *mesh);
- #endif /* __glsmapint_h__ */