📄 mesh.h
字号:
#ifndef SafeDelete
#define SafeDelete(p) { if(p) { delete (p); (p)=NULL; } }
#endif
#ifndef SafeDeleteArray
#define SafeDeleteArray(p) { if(p) { delete[] (p); (p)=NULL; } }
#endif
#ifndef SafeRelease
#define SafeRelease(p) { if(p) { (p)->Release(); (p)=NULL; } }
#endif
//实现静态网格,用于加载场景模型,实现碰撞检测
class CMesh
{
private:
D3DXVECTOR3 m_vPos;
D3DXVECTOR3 m_vMin,m_vMax;//方盒最小点最大点,本地坐标系
float m_fAngle;
float m_fScale;
LPD3DXMESH m_pMesh;
LPDIRECT3DDEVICE9 m_pDevice;
DWORD m_dwNumOfMaterials;//材质数量
D3DMATERIAL9 *m_pMeshMaterials;//材质指针
LPDIRECT3DTEXTURE9 *m_pMeshTextures;//贴图指针
public:
void SetPosition(float x,float y,float z)
{
m_vPos.x=x;
m_vPos.y=y;
m_vPos.z=z;
m_fScale=1.0f;
m_fAngle=0;
}
CMesh(LPDIRECT3DDEVICE9 pDevice,char *strMesh,BOOL bOptimize);
virtual ~CMesh();
void Render();
void Optimize();
void GetBoundingBox(D3DXVECTOR3 *pVmin,D3DXVECTOR3 *pVmax)//?
{
*pVmin=m_vMin+m_vPos;
*pVmax=m_vMax+m_vPos;
}
//实现方盒碰撞
LRESULT CollisionTest(CMesh *pMesh)
{
return(m_vMin.x<pMesh->m_vMax.x &&
m_vMin.y<pMesh->m_vMax.y &&
m_vMin.z<pMesh->m_vMax.z &&
m_vMax.x>pMesh->m_vMin.x &&
m_vMax.y>pMesh->m_vMin.y &&
m_vMax.z>pMesh->m_vMin.z
);
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -