Terrain.h
上传用户:junlon
上传日期:2022-01-05
资源大小:39075k
文件大小:2k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. //--------------------------------------------------------------------------------------
  2. // 文件: terrain.h, 作者:曾凡喜
  3. //
  4. // 封装了均匀地形类,地形由 m_iWidth * m_iHeight 个顶点组成,高程值由height二维数组提供,地图的几何大小恒为40.0*40.0
  5. //
  6. // 使用该类三个步骤:CZFXTerrain() -> CreateTerrain() -> RenderTerrain()
  7. //
  8. // 版权归作者所有,不得用于商业用途
  9. //--------------------------------------------------------------------------------------
  10. #ifndef __TERRAIN_H__
  11. #define __TERRAIN_H__
  12. class CZFXTerrain
  13. {
  14. public:
  15. CZFXTerrain(void);
  16. ~CZFXTerrain(void);
  17. protected:
  18. LPDIRECT3DVERTEXBUFFER9 m_pVB;
  19.     LPDIRECT3DINDEXBUFFER9 m_pIB;
  20. LPDIRECT3DTEXTURE9 m_pTexture;
  21. UINT m_iWidth;
  22. UINT m_iHeight;
  23. public:
  24. /** 创建地形,高程值从height二维数组中载入, 数组的格式应为height[iHeight][iWidth]
  25. iHeight, iWidth指定地形顶点数据的多少, fWidth, fHeight指定地形的几何大小
  26. */
  27. virtual bool CreateTerrain( LPDIRECT3DDEVICE9 pd3dDevice, int iWidth, int iHeight, float fWidth, float fHeight, 
  28. float height[][200], LPCTSTR strTexFileName = NULL );
  29. // 渲染地形, Flag指定了填充模式,可以传入D3DFILL_POINT or D3DFILL_WIREFRAME
  30. bool RenderTerrain( LPDIRECT3DDEVICE9 pd3dDevice, D3DFILLMODE Flag = D3DFILL_SOLID );
  31. void OnDestroyDevice();
  32. };
  33. typedef struct tagCUSTOMVERTEX{
  34. D3DXVECTOR3 position; // The position of the vertex.
  35. D3DXVECTOR3 normal;   // The nomal Vector.
  36. D3DCOLOR    color;    // The color
  37. FLOAT       tu, tv;   // The texture coordinates
  38. }CUSTOMVERTEX;
  39. #define D3DFVF_CUSTOMVERTEX  D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_DIFFUSE|D3DFVF_TEX1
  40. #endif  //__TERRAIN_H__