File: md2.h

package info (click to toggle)
nvidia-cg-toolkit 3.1.0013-5
  • links: PTS, VCS
  • area: non-free
  • in suites: bookworm, bullseye, buster, forky, sid, trixie
  • size: 187,516 kB
  • sloc: ansic: 510,168; cpp: 34,693; makefile: 745
file content (76 lines) | stat: -rw-r--r-- 1,787 bytes parent folder | download | duplicates (12)
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__ */