⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lodterrain.h

📁 里内面有两个关于地形的模拟的范例,仔细看一下会收获不小啊
💻 H
字号:
#ifndef LODTerrain_Include
#define LODTerrain_Include

#define MOUNTAIN_C1  D3DCOLOR_XRGB(10,20,220)
#define MOUNTAIN_C2  D3DCOLOR_XRGB(123,180,118)
#define MOUNTAIN_C3  D3DCOLOR_XRGB(0,167,80)
#define MOUNTAIN_C4  D3DCOLOR_XRGB(23,123,48)
#define MOUNTAIN_C5  D3DCOLOR_XRGB(110,100,80)
#define MOUNTAIN_C6  D3DCOLOR_XRGB(255,55,255)

#define CUSTOMVERTEX_FVF (D3DFVF_XYZ|D3DFVF_DIFFUSE)
struct CUSTOMVERTEX{
		float x,y,z;
		D3DXCOLOR color;
		CUSTOMVERTEX(){}
		CUSTOMVERTEX(float a,float b,float c,D3DCOLOR f){
			x=a;
			y=b;
			z=c;
			color=f;
		}
};

class CFrustum;
class CCamera;

class CLODTerrain  
{
private:
	LPDIRECT3DDEVICE9 m_pd3dDevice;
	LPDIRECT3DVERTEXBUFFER9 m_pVertexBuffer;
	CFrustum* m_pFrustum;
	bool m_bUseHeightFile;
	int m_iTerrainSize;
	bool* m_pbQuadMat;
	float m_fHeightScale;
	unsigned char* m_pucHeightData;
	float m_fResolution;
	float m_fHeightDetail;
	LPDIRECT3DTEXTURE9  m_pTexture;
	int m_iTexMapRepeatNum;
private:
	bool InitTerrainByFun(TCHAR* szTextureFile);
	bool InitTerrainByFile(TCHAR* szHeightFile,TCHAR* szTextureFile);
	bool InitVertexBuf();
	bool InitQuadMat();
	void SplitNode(float x,float z,int iNodeLength,CCamera* pCamera);
	void TrimNodeSplit(int iX,int iZ,int iNodeLength);
	void RenderNode(float x,float z,int iNodeLength);
	void RenderTriFan(CUSTOMVERTEX* vertex,int iVertexCount);
	float GenerateHeightData(float x,float z);
	void GenerateVertex(float x,float z,CUSTOMVERTEX& vertex);
	bool GetQuadMatData(int x,int z);
	void SetQuadMatData(int x,int z,bool b);
	bool LoadHeightData(TCHAR* szFileName);
	void SetChildNodeFalse(int iX,int iZ,int iNodeLength);
public:
	CLODTerrain(LPDIRECT3DDEVICE9 pd3dDevice,bool bUseHeightFile=true);
	~CLODTerrain();
	bool InitTerrain(TCHAR* szHeightFile,TCHAR* szTextureFile);
	void UpdateTerrain(CCamera* pCamera);
	void Render();
};	
#endif 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -