NoiseGenerator.h
上传用户:henghua
上传日期:2007-11-14
资源大小:7655k
文件大小:2k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. #ifndef NOISEGENERATER_H
  2. #define NOISEGENERATER_H
  3. #include "comman.h"
  4. #include "Configuration.h"
  5. #include "BoatWave.h"
  6. #include "tools.h"
  7. // 噪声场生成类
  8. class CNoiseGenerator
  9. {
  10. // 数据成员
  11. public:
  12. int OriginalNoise[256*256]; // 原始噪声场
  13. int TransitionalNoise[256*8]; // 过渡噪声场
  14. int FinalNoise[128*128*2]; // 最终噪声场 
  15. int *pNoise;
  16. SEAVERTEX *noiseVertices; // 对最终噪声场进行采样得到的具体坐标的顶点高度场
  17. int sizeX, sizeY;
  18. CConfiguration *config; // 参数调节类
  19. DWORD lastTime;
  20. double time; // 时间轴
  21. D3DXVECTOR4 corner00,corner10,corner01,corner11; // 绘制海洋面的四个顶角
  22. LPDIRECT3DTEXTURE9 LoadedFinalNoise[2]; // 采样高度场加载到纹理
  23. LPDIRECT3DTEXTURE9  trailHeightMap; // 尾迹高度场纹理
  24. LPDIRECT3DTEXTURE9 heightMap,normalMap; // 高度场纹理, 法向量场纹理
  25. LPDIRECT3DDEVICE9 device;
  26. LPDIRECT3DSURFACE9 depthstencil;
  27. LPD3DXEFFECT hMapEffect, nMapEffect;
  28. float A;  // 控制海浪大小
  29. // 函数成员
  30. public:
  31. // 初始化函数组
  32. CNoiseGenerator(int sizeX, int sizeY, CConfiguration *config, const LPDIRECT3DDEVICE9 dev);
  33. ~CNoiseGenerator();
  34. void InitializeVertices();
  35. void InitializeOriginalNoise();
  36. void InitializeTextures();
  37. void LoadEffects();
  38. // 每桢数据更新函数组
  39. bool UpdateNoise(const D3DXMATRIXA16 *m, CBoatWave *pWave);
  40. void TimeGoing();
  41. void UpdateTransitionalNoise();
  42. void UpdateFinalNoise();
  43. void UpdateVerticesCoordinate(const D3DXMATRIXA16 *extension, CBoatWave *pWave);
  44. D3DXVECTOR4 CalculateWorldPosition(D3DXVECTOR2 uv, const D3DXMATRIXA16 *extension);
  45. void LoadNoiseToTextures();
  46. void LoadTrailToTexture(CBoatWave *pWave);
  47. float GetHeight(int, int);
  48. float GetHeight(float, float);
  49. // 更新法向量场纹理的数据
  50. void UpdateVerticesNormal(CBoatWave *pWave);
  51. };
  52. #endif