_M1G****开头的块。。。
typedef struct _M1G
{
char _head[8]; //_M1G****
DWORD _fileSize;
DWORD _size; //header size
DWORD _partIndex; //0
DWORD _partSize;
_M1GPart partFM1G;
_M1GPart partSM1G[n];
_M1GPart partMM1G;
GM1GPart partGM1G; //vertices & indexes
_M1GPart partLLOC;
_M1GPart partONUN;
_M1GPart partRTXE;
} _M1G;
typedef struct _M1GPart
{
char _head[8];
DWORD _size;
BYTE pData[_size];
} _M1GPart;
typedef struct GM1GPart //Vertices & Faces
{
char _head[8];
DWORD _size;
BYTE _dxHeader[32];
DWORD _partsCount; //==9
GM1G_SubPart part1;
GM1G_SubPart part2;
GM1G_SubPart part3;
VertexPart part4;
GM1G_SubPart part5;
GM1G_SubPart part6;
IndexesPart part7;
GM1G_SubPart part8;
GM1G_SubPart part9;
} GM1GPart;
typedef struct GM1G_SubPart
{
WORD _id; //if id==4, vertices; if id==7, indexes;
WORD _subPartsCount;
DWORD _size;
BYTE pData[_size];
} GM1G_SubPart;
typedef struct VertexPart
{
WORD _id;
WORD _subPartsCount;
DWORD _size;
int vertexSubPartCount;
VertexSubPart parts[vertexSubPartCount];
} VertexPart;
typedef struct VertexSubPart
{
int zeroFlag;
int vertexSize;
DWORD vertexCount;
int zeroFlag;
Vertex vertices[vertexCount];
} VertexSubPart;
typedef struct Vertex
{
D3DXVECTOR3 xyz; //12
BYTE skinData[16]; //16
D3DXVECTOR3 normal; //12
D3DXVECTOR2 uv; //8
} Vertex;
typedef struct IndexesPart
{
WORD _id;
WORD _subPartsCount;
DWORD _size;
int indexSubPartCount; //==vertexSubPartCount
IndexSubPart parts[indexSubPartCount];
} IndexesPart;
typedef struct IndexSubPart
{
DWORD indexCount;
int indexSize; //bits
int zeroFlag;
WORD indexes[indexCount];
} IndexSubPart;