www.pudn.com > Balls.rar > StaticMesh.h, change:2007-07-26,size:1903b


/******************************************************************** 
	created:	2007/03/19 
	created:	19:3:2007   9:59 
	filename:	StaticMesh.h 
	author:		杨智 
	 
	purpose:	简单的.X文件静态模型的读取、渲染和设置贴图 
*********************************************************************/ 
#include <vector> 
using namespace std; 
 
#pragma once 
 
/** 静态模型类 
	@remarks 
		 
	@par 
		 
	@par 
		此类包括了如下知识点: 
*/ 
 
class CStaticMesh 
{ 
private: 
	/// D3D设备 
	LPDIRECT3DDEVICE9   m_pDevice; 
	/// 模型文件名 
	CHAR				m_fileName[MAX_PATH]; 
 
	/// 模型材质 
	vector<D3DMATERIAL9>		m_vecMaterial; 
	/// 模型贴图 
	vector<LPDIRECT3DTEXTURE9>	m_vecTexture; 
	/// 模型材质数量 
	DWORD m_dwNumMaterials; 
 
	/// 网格模型 
	LPD3DXMESH			m_pMesh; 
 
	/// 场景混合模式 
	SceneBlendType		m_enBlendType; 
 
public: 
	CStaticMesh(void); 
	~CStaticMesh(void); 
 
	/** 初始化静态模型 
	@remarks 
	 
	@param 
		pDevice D3D设备 
	@param 
		pFileName 模型文件名 
	*/ 
	bool Init(LPDIRECT3DDEVICE9 pDevice, LPCSTR pFileName); 
 
	/** 渲染静态模型 
	@remarks 
 
	@param 
		pMatWorld 变换矩阵	 
	*/ 
	void Render(const D3DXMATRIX &matWorld); 
 
	/** 从文件设置静态模型贴图 
	@remarks 
	 
	@param 
		dwID 贴图ID 
	@param 
		pFileName 贴图文件名 
	*/ 
	HRESULT SetTextureFromFile(DWORD dwID, LPCSTR pFileName); 
	/** 从现有贴图设置贴图 
		@param 
			dwID 贴图ID 
		@param 
			pTexture 原贴图 
	*/ 
	void SetTexture(DWORD dwID, LPDIRECT3DTEXTURE9 pTexture); 
	/** 优化网格模型 
	@remarks 
	 
	*/ 
	HRESULT Optimize(void); 
	/** 获得网格模型 
	@remarks 
	 
	*/ 
	LPD3DXMESH GetSysMemMesh(void); 
	/** 设置顶点格式 
	*/ 
	HRESULT SetFVF(DWORD dwFVF); 
	/** 获得纹理信息 
	*/ 
	LPDIRECT3DTEXTURE9 *GetTexture(DWORD dwID); 
	/** 获得模型文件名 
	*/ 
	LPCSTR GetFileName() { return m_fileName; }; 
	/** 设置场景混合方式 
	*/ 
	void SetBlendType( SceneBlendType enBlendType ) { m_enBlendType = enBlendType; }; 
};