NoiseGenerator.h
上传用户:henghua
上传日期:2007-11-14
资源大小:7655k
文件大小:2k
- #ifndef NOISEGENERATER_H
- #define NOISEGENERATER_H
- #include "comman.h"
- #include "Configuration.h"
- #include "BoatWave.h"
- #include "tools.h"
- // 噪声场生成类
- class CNoiseGenerator
- {
- // 数据成员
- public:
- int OriginalNoise[256*256]; // 原始噪声场
- int TransitionalNoise[256*8]; // 过渡噪声场
- int FinalNoise[128*128*2]; // 最终噪声场
- int *pNoise;
- SEAVERTEX *noiseVertices; // 对最终噪声场进行采样得到的具体坐标的顶点高度场
- int sizeX, sizeY;
- CConfiguration *config; // 参数调节类
- DWORD lastTime;
- double time; // 时间轴
- D3DXVECTOR4 corner00,corner10,corner01,corner11; // 绘制海洋面的四个顶角
- LPDIRECT3DTEXTURE9 LoadedFinalNoise[2]; // 采样高度场加载到纹理
- LPDIRECT3DTEXTURE9 trailHeightMap; // 尾迹高度场纹理
- LPDIRECT3DTEXTURE9 heightMap,normalMap; // 高度场纹理, 法向量场纹理
- LPDIRECT3DDEVICE9 device;
- LPDIRECT3DSURFACE9 depthstencil;
- LPD3DXEFFECT hMapEffect, nMapEffect;
- float A; // 控制海浪大小
- // 函数成员
- public:
- // 初始化函数组
- CNoiseGenerator(int sizeX, int sizeY, CConfiguration *config, const LPDIRECT3DDEVICE9 dev);
- ~CNoiseGenerator();
- void InitializeVertices();
- void InitializeOriginalNoise();
- void InitializeTextures();
- void LoadEffects();
- // 每桢数据更新函数组
- bool UpdateNoise(const D3DXMATRIXA16 *m, CBoatWave *pWave);
- void TimeGoing();
- void UpdateTransitionalNoise();
- void UpdateFinalNoise();
- void UpdateVerticesCoordinate(const D3DXMATRIXA16 *extension, CBoatWave *pWave);
- D3DXVECTOR4 CalculateWorldPosition(D3DXVECTOR2 uv, const D3DXMATRIXA16 *extension);
- void LoadNoiseToTextures();
- void LoadTrailToTexture(CBoatWave *pWave);
- float GetHeight(int, int);
- float GetHeight(float, float);
- // 更新法向量场纹理的数据
- void UpdateVerticesNormal(CBoatWave *pWave);
- };
- #endif