⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 md2file.h

📁 游戏编程精华02-含有几十个游戏编程例子
💻 H
字号:
#ifndef __MD2FILE_H__
#define __MD2FILE_H__

/* Copyright NVIDIA Corporation, 2000. */

/* $Id: //sw/main/apps/OpenGL/mjk/md2shader/md2file.h#9 $ */

#include <stdlib.h>

#define MD2_MAX_TRIANGLES		4096
#define MD2_MAX_VERTICES		2048
#define MD2_MAX_TEXCOORDS		2048
#define MD2_MAX_FRAMES			512
#define MD2_MAX_SKINS			32
#define MD2_MAX_FRAMESIZE		(MD2_MAX_VERTICES * 4 + 128)

typedef struct { 
  int magic; 
  int version; 
  int skinWidth; 
  int skinHeight; 
  int frameSize; 
  int numSkins; 
  int numVertices; 
  int numTexCoords; 
  int numTriangles; 
  int numGlCommands; 
  int numFrames; 
  int offsetSkins; 
  int offsetTexCoords; 
  int offsetTriangles; 
  int offsetFrames; 
  int offsetGlCommands; 
  int offsetEnd; 
} Md2Header;  /* File format structure! */

typedef struct {
  unsigned char vertex[3];
  unsigned char lightNormalIndex;
} Md2AliasTriangleVertex;

typedef struct {
  float vertex[3];
  float normal[3];
} Md2TriangleVertex;


typedef struct {
  short vertexIndex;
  short triangle;
  short edge;
  short prev;
  short next[2];
  int active;
  float maxSqArea;
} Md2Boundary;

typedef struct {
  short vertexIndices[3];
  short textureIndices[3];
} Md2Triangle;

typedef struct {
  float p[4];  /* Plane equation the triangle in object space. */
} Md2FrameTrianglePlane;

typedef struct {
  short adjacentTriangle[3];
  char open;
  char openEdgeMask;
} Md2TriangleEdgeInfo;

typedef struct {
  short s, t;
} Md2TextureCoordinate;

typedef struct {
  float scale[3];
  float translate[3];
  char name[16];
  Md2AliasTriangleVertex alias_vertices[1];
} Md2AliasFrame;

typedef struct {
  char name[16];
  Md2TriangleVertex *vertices;
} Md2Frame;

#if 0
typedef char Md2Skin[64];
#endif

typedef struct {
  float s, t;
  int vertexIndex;
} Md2CommandVertex;

typedef struct {
  Md2Header header;
#if 0
  Md2Skin *skins;
#endif
  Md2TextureCoordinate *texCoords;
  Md2Triangle *triangles;
  Md2Frame *frames;
  Md2TriangleEdgeInfo *edgeInfo;
  Md2FrameTrianglePlane *framePlane;
  char *filename;
} Md2Model;

/*typedef struct {
  Md2Model *model;
  int smooth;
  int vertexLighting;
  int specular;
  int shadowVolumes;
  int numLights;
  size_t vertexInfoSize;
  void *vertexInfo;
  unsigned char *facingness;
  unsigned char *possibleSilhouetteEdgeMask;
  Vector *objectSpaceLightPosition;
} Md2ModelInstant;
*/
#define NUMVERTEXNORMALS 162

extern float md2VertexNormals[NUMVERTEXNORMALS][3];
extern void md2FreeModel(Md2Model *model);
extern Md2Model *md2ReadModel(const char *filename);

#endif /* __MD2FILE_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -