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

📄 md2file.h

📁 VC++ DEMO, used for the beginners and the amour
💻 H
字号:
#ifndef MD2_HEADER_FILE_H
#define MD2_HEADER_FILE_H

#if _MCR_VCR > 1000
#pragma once
#endif
#include "resource.h"

/*                          Md2文件                       */
/*   
                      ===================
                      ==     Header    ==
					  ===================
					           |
					  ===================     ==============
					  ==     Frames    == ===>== Vertices ==
					  ===================     ==============
					           |
					  ===================
					  ==   Triangles   ==
					  ===================
					           |
					  ===================
					  = Skin Filenames  =
					  ===================
					           |																 | 	
					  ===================	
					  ==    Texture    ==
					  ==  Coordinates  ==
                      ===================                 */
#pragma pack(push, 1)

typedef struct tagMd2Header
{
	int m_iMagicNum;                       // 魔法数字(0x32504449)
	int m_iVersion;                        // 版本号(0x08)
	int m_iSkinWidthPx;                    // 纹理宽度 (Pixel)
	int m_iSkinHeightPx;                   // 纹理高度 (Pixel)
	int m_iFrameSize;                      // 帧大小
	int m_iNumSkins;                       // 表皮数量
	int m_iNumVertices;                    // 顶点数
	int m_iNumCoordinates;                 // 纹理坐标数
	int m_iNumTriangles;                   // 三角形数量
	int m_iNumGLCommands;                  // GL命令
	int m_iNumFrames;                      // 帧数量
	int m_iOffsetSkins;                    // 纹理信息偏移
	int m_iOffsetTexCoors;                 // 纹理坐标信息偏移
	int m_iOffsetTriangles;                // 三角形信息偏移
	int m_iOffsetFrames;                   // 帧信息偏移
	int m_iOffsetGLCommands;               // GL命令信息偏移
	int m_iFileSize;                       // 文件大小
}Md2Header_t;

typedef struct tagMd2Vertex                // 顶点坐标格式
{
	float m_fVert[3];
}Md2Vertex_t;



typedef struct tagMd2Frame
{
	float m_fScale[3];                     // 帧内顶点解压Scale信息
	float m_fTrans[3];                     // 帧内顶点解压Trans信息
	char  m_caName[16];                    // 帧名
    std::vector<Md2Vertex_t> m_pVertices;  // 顶点解压方法(Vert[k]=Data[k]*Scale[k]+Trans[k] )
}Md2Frame_t;

typedef struct tagMd2TexCoord              // 纹理坐标格式
{
	float m_fTex[2];
}Md2TexCoord_t;

typedef struct tagMd2Triangle
{
	unsigned short m_sVertIndices[3];      // 顶点坐标索引
	unsigned short m_sTexIndices[3];       // 纹理坐标索引
}Md2Triangle_t;

typedef struct tagMd2SkinName
{
	TCHAR Skinname[256];                   // 纹理信息
}Md2SkinName_t;
#pragma pack(pop, 1)

typedef std::vector<Md2SkinName_t> Md2SkinNameVector_t;
typedef std::vector<Md2Triangle_t> Md2TriangleVector_t;
typedef std::vector<Md2TexCoord_t> Md2TexCoordVector_t;
typedef std::vector<Md2Frame_t>    Md2FrameVector_t;
////////////////////////////////////////////////////////
// 消息函数定义.
BOOL WINAPI DlgProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
BOOL Dlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
BOOL Dlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
////////////////////////////////////////////////////////
// 功能函数定义.
HRESULT Md2_Configure();
HRESULT Md2_Init3DEntironment(HWND hwnd);
HRESULT Md2_DrawFrame(DWORD NowTime,float Speed);
HRESULT Md2_SetState( UINT State);
HRESULT Md2_Parse(TCHAR * strFileName);
HRESULT Md2_Render();
HRESULT Md2_Shutdown();
////////////////////////////////////////////////////////
#endif

⌨️ 快捷键说明

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