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

📄 terrain.h

📁 通过vc++编程实现3DS格式的模型载入
💻 H
字号:
//========================================================
/**
*  @file      Terrain.h
*
*  项目描述: 3DS文件载入
*  文件描述:  地形类  
*  适用平台: Windows98/2000/NT/XP
*  
*  作者:     WWBOSS
*  电子邮件:  wwboss123@gmail.com
*  创建日期: 2006-12-06	
*  修改日期: 2007-04-02  加入了细节纹理,采用了多重纹理技术,使地表更富有细节感
*             2007-05-19  给地形加入了简单雾效              
*
*/     
//========================================================

#ifndef __TERRAIN_H__
#define __TERRAIN_H__


#include "stdafx.h"
#include "CBMPLoader.h"
#include "camera.h"


/** 地形类 */
class CTerrain
{
public:
	
	/** 构造函数 */
	CTerrain();

	~CTerrain();

	/** 初始化地形 */
	bool init();

	/** 渲染地形 */
	void render();

	/** 设置是否使用细节纹理标志 */ 
	void setDetail(bool _bDetail) { m_bDetail = _bDetail;}
		
	/** 获得地面高度 */
	float getAveHeight(float x, float z);
	
	/** 得到当前Terrain指针 */
	static CTerrain* GetTerrainPointer() { return m_pTerrain;}
	

private:

	/** 设置地形的大小 */
	void setSize(unsigned  int width, unsigned  int cell); 

	/** 载入'.raw'高度图 */
	bool loadRawFile(const char* fileName);

	/** 装载纹理 */
	bool loadTexture();

	/** 获得点(x,y)的高度信息 */
	int getHeight(int x, int y);

	/** 设置纹理坐标 */
	void setTexCoord(float x, float z);

	/** 设置雾效 */
	void initFog();

                      
	
public:
	static CTerrain*  m_pTerrain;        /**< 当前Terrain指针 */
	unsigned  int     m_nWidth;          /**< 地形网格数 */
	unsigned  int     m_nCellWidth;      /**< 每一格宽度 */
   	BYTE*             m_pHeightMap;      /**< 存放高度信息 */
	CBMPLoader        m_texture[2];      /**< 地面纹理和细节纹理 */
	bool              m_bDetail;         /**< 是否使用细节纹理标志 */
	int               m_DetailScale;     /**< 缩放比例 */
                                         	
};

#endif //__TERRAIN_H__

⌨️ 快捷键说明

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