📄 staticmesh.h
字号:
/********************************************************************
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; };
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -