#ifndef __MD2_H__ #define __MD2_H__ /* Copyright NVIDIA Corporation, 2000. */ /* $Id: //sw/main/apps/OpenGL/mjk/md2shader/md2.h#18 $ */ #include <stdlib.h> //#include "matrix.h" #include "md2file.h" #ifdef __cplusplus extern "C" { #endif typedef struct { short vertexIndex; short triangle; short edge; short prev; short next[2]; int active; float maxSqArea; } Md2Boundary; typedef struct { float p[4]; /* Plane equation the triangle in object space. */ } Md2FrameTrianglePlane; typedef struct { short adjacentTriangle[3]; /* Bits 0:1 is edge number of adjacent triangle 0 */ /* Bits 2:3 is edge number of adjacent triangle 1 */ /* Bits 4:5 is edge number of adjacent triangle 2 */ unsigned char adjacentTriangleEdges; unsigned char openEdgeMask; } Md2TriangleEdgeInfo; #define SET_ADJACENT_EDGE(x, n, e) (x) |= ((e) << (2*n)) #define ADJACENT_EDGE(x, n) (((x) >> (2*(n))) & 0x3) typedef struct { Md2Header header; #if 0 Md2Skin *skins; #endif Md2TextureCoordinate *texCoords; Md2Triangle *triangles; Md2Frame *frames; Md2TriangleEdgeInfo *edgeInfo; Md2FrameTrianglePlane *framePlane; char *filename; #if 0 int *glCommandBuffer; #endif } Md2Model; extern float md2VertexNormals[NUMVERTEXNORMALS][3]; extern void md2FreeModel(Md2Model *model); extern Md2Model *md2ReadModel(const char *filename); extern void md2EliminateTrivialDegenerateTriangles(Md2Model *model); extern void md2ComputeTriangleEdgeInfo(Md2Model *model); extern void md2CheckForBogusAdjacency(Md2Model *model); extern void md2EliminateAdjacentDegenerateTriangles(Md2Model *model); extern void md2CloseOpenTriangleGroups(Md2Model *model); extern void md2ComputeFrameTrianglePlanes(Md2Model *model); #ifdef __cplusplus } #endif #endif /* __MD2_H__ */