dispmap.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:1k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // dispmap.h
  2. //
  3. // Copyright (C) 2001, Chris Laurel <claurel@shatters.net>
  4. //
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the GNU General Public License
  7. // as published by the Free Software Foundation; either version 2
  8. // of the License, or (at your option) any later version.
  9. #ifndef _DISPMAP_H_
  10. #define _DISPMAP_H_
  11. #include <string>
  12. #include <celmath/vecmath.h>
  13. typedef float (*DisplacementMapFunc)(float, float, void*);
  14. class DisplacementMap
  15. {
  16.  public:
  17.     DisplacementMap(int w, int h); 
  18.     ~DisplacementMap();
  19.     int getWidth() const { return width; };
  20.     int getHeight() const { return height; };
  21.     inline float getDisplacement(int x, int y) const;
  22.     inline void setDisplacement(int x, int y, float d);
  23.     void generate(DisplacementMapFunc func, void* info = NULL);
  24.     void clear();
  25.     
  26.  private:
  27.     int width;
  28.     int height;
  29.     float* disp;
  30. };
  31. // extern DisplacementMap* LoadDisplacementMap(std::string filename);
  32. float DisplacementMap::getDisplacement(int x, int y) const
  33. {
  34.     return disp[y * width + x];
  35. }
  36. void DisplacementMap::setDisplacement(int x, int y, float d)
  37. {
  38.     disp[y * width + x] = d;
  39. }
  40. #endif // _DISPMAP_H_