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