📄 game_terrain.h
字号:
#ifndef GAMEENGINE_TERRAIN_INCLUDE
#define GAMEENGINE_TERRAIN_INCLUDE
#define D3DFVF_TERRAIN D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1 //坐标信息
class CTerrain
{
protected:
struct TVertexBuffer
{
float x,y,z;
float nx,ny,nz; //坐标信息
float tu,tv;
};
protected:
LPDIRECT3DDEVICE9 m_pDevice;
LPDIRECT3DTEXTURE9 m_pTexture;
D3DMATERIAL9 m_matMaterial;
DWORD m_dwNumOfVertices;
DWORD m_dwNumOfIndices;
DWORD m_dwNumOfPolygons;
D3DXVECTOR3 m_vPos;
float m_nTile;
float m_maxHeight; //最大高度
float m_CellWidth; //地图放大倍数
BYTE *m_pHeightData; //高度信息
public:
long m_nCol,m_nRow;
D3DXMATRIX m_matWorld;
LPD3DXMESH m_pMesh;
CTerrain(LPDIRECT3DDEVICE9 pDevice, D3DVECTOR position);
virtual ~CTerrain();
void Initialize(char* strTerrain, char* strTexture, float cellWidth,
float height=800,float nTile=1.0f);
float GetHeight(float x,float z);
void SetWorldTransorm();
const LPD3DXVECTOR3 GetPosition(){return &m_vPos;}
LPD3DXMESH GetMesh(){return m_pMesh;}
bool GetGroundRect(D3DXVECTOR3 vPos, D3DXVECTOR3* vTL, D3DXVECTOR3* vTR, D3DXVECTOR3* vBL, D3DXVECTOR3* vBR);
bool SetMaterial(D3DCOLORVALUE Diffuse, D3DCOLORVALUE Ambient, D3DCOLORVALUE Specular, D3DCOLORVALUE Emissive, float rPower);
void Render();
HRESULT GetTerrainVertex(D3DXVECTOR3 *cross,DWORD index,float u,float v);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -