www.pudn.com > 3D_Tank.rar > Terrain.h
#ifndef __TERRAIN_H__ #define __TERRAIN_H__ #include#include #include #include #include "ComPtr.h" #include "TerrainInfo.h" struct TerrainVertex { float x, y, z; D3DXVECTOR3 normal; DWORD color; float tx, ty; static const DWORD FVF = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_NORMAL | D3DFVF_TEX1; }; class CTerrain { public: CTerrain(); ~CTerrain(); VOID InitTerrainFromHeightmap( const CComPtr &device, LPCTSTR pSrcRawFile, int nCxPixel, int nCzPixel, int nCxLength, int nCzLength ); float GetHeight(float x, float z); VOID GetNormal(float x, float z, D3DXVECTOR3 *vNormal); BOOL SetTexture(LPCTSTR pSrcFileName); BOOL IsInTerrain(float x, float z); BOOL PreComputerLight( const D3DXVECTOR3 &vDirLight, const D3DXCOLOR &vLightColor); BOOL Render(); private: BOOL PrepareRenderState(); float ComputeShade(D3DXVECTOR3 normal, D3DXVECTOR3 reverseLight); BOOL ResetRenderState(); float GetXVertex(float x); float GetZVertex(float z); CTerrainInfo m_MapInfo; CComPtr m_pDevice; CComPtr m_pTerrain; CComPtr m_pTexture; }; //地形类,实现常用的地形方面的功能 #endif //Terrain.h