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

OpenGL

开发平台:

Visual C++

  1. // texmanager.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 _TEXMANAGER_H_
  10. #define _TEXMANAGER_H_
  11. #include <string>
  12. #include <map>
  13. #include <celutil/resmanager.h>
  14. #include <celengine/texture.h>
  15. #include "multitexture.h"
  16. class TextureInfo : public ResourceInfo<Texture>
  17. {
  18.  public:
  19.     std::string source;
  20.     std::string path;
  21.     unsigned int flags;
  22.     float bumpHeight;
  23.     unsigned int resolution;
  24.     enum {
  25.         WrapTexture      = 0x1,
  26.         CompressTexture  = 0x2,
  27.         NoMipMaps        = 0x4,
  28.         AutoMipMaps      = 0x8,
  29.         AllowSplitting   = 0x10,
  30.         BorderClamp      = 0x20,
  31.     };
  32.     TextureInfo(const std::string _source,
  33.                 const std::string _path,
  34.                 unsigned int _flags,
  35.                 unsigned int _resolution = medres) :
  36.         source(_source),
  37.         path(_path),
  38.         flags(_flags),
  39.         bumpHeight(0.0f),
  40.         resolution(_resolution) {};
  41.     TextureInfo(const std::string _source,
  42.                 const std::string _path,
  43.                 float _bumpHeight,
  44.                 unsigned int _flags,
  45.                 unsigned int _resolution = medres) :
  46.         source(_source),
  47.         path(_path),
  48.         flags(_flags),
  49.         bumpHeight(_bumpHeight),
  50.         resolution(_resolution) {};
  51.     TextureInfo(const std::string _source,
  52.                 unsigned int _flags,
  53.                 unsigned int _resolution = medres) :
  54.         source(_source),
  55.         path(""),
  56.         flags(_flags),
  57.         bumpHeight(0.0f),
  58.         resolution(_resolution) {};
  59.     virtual std::string resolve(const std::string&);
  60.     virtual Texture* load(const std::string&);
  61. };
  62. inline bool operator<(const TextureInfo& ti0, const TextureInfo& ti1)
  63. {
  64.     if (ti0.resolution == ti1.resolution)
  65.     {
  66.         if (ti0.source == ti1.source)
  67.             return ti0.path < ti1.path;
  68.         else
  69.             return ti0.source < ti1.source;
  70.     }
  71.     else
  72.     {
  73.         return ti0.resolution < ti1.resolution;
  74.     }
  75. }
  76. typedef ResourceManager<TextureInfo> TextureManager;
  77. extern TextureManager* GetTextureManager();
  78. #endif // _TEXMANAGER_H_