1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
#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__ */
|