mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-31 04:56:39 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef OPENMW_COMPONENTS_RESOURCE_TEXTUREMANAGER_H
 | |
| #define OPENMW_COMPONENTS_RESOURCE_TEXTUREMANAGER_H
 | |
| 
 | |
| #include <string>
 | |
| #include <map>
 | |
| 
 | |
| #include <osg/ref_ptr>
 | |
| #include <osg/Image>
 | |
| #include <osg/Texture2D>
 | |
| 
 | |
| namespace VFS
 | |
| {
 | |
|     class Manager;
 | |
| }
 | |
| 
 | |
| namespace Resource
 | |
| {
 | |
| 
 | |
|     /// @brief Handles loading/caching of Images and Texture StateAttributes.
 | |
|     class TextureManager
 | |
|     {
 | |
|     public:
 | |
|         TextureManager(const VFS::Manager* vfs);
 | |
|         ~TextureManager();
 | |
| 
 | |
|         /// @warning It is unsafe to call this function when a draw thread is using the textures. Call stopThreading() first!
 | |
|         void setFilterSettings(osg::Texture::FilterMode minFilter, osg::Texture::FilterMode maxFilter, int maxAnisotropy);
 | |
| 
 | |
|         /// Keep a copy of the texture data around in system memory? This is needed when using multiple graphics contexts,
 | |
|         /// otherwise should be disabled to reduce memory usage.
 | |
|         void setUnRefImageDataAfterApply(bool unref);
 | |
| 
 | |
|         /// Create or retrieve a Texture2D using the specified image filename, and wrap parameters.
 | |
|         osg::ref_ptr<osg::Texture2D> getTexture2D(const std::string& filename, osg::Texture::WrapMode wrapS, osg::Texture::WrapMode wrapT);
 | |
| 
 | |
|         /// Create or retrieve an Image
 | |
|         osg::ref_ptr<osg::Image> getImage(const std::string& filename);
 | |
| 
 | |
|         const VFS::Manager* getVFS() { return mVFS; }
 | |
| 
 | |
|         osg::Texture2D* getWarningTexture();
 | |
| 
 | |
|     private:
 | |
|         const VFS::Manager* mVFS;
 | |
| 
 | |
|         osg::Texture::FilterMode mMinFilter;
 | |
|         osg::Texture::FilterMode mMagFilter;
 | |
|         int mMaxAnisotropy;
 | |
| 
 | |
|         typedef std::pair<std::pair<int, int>, std::string> MapKey;
 | |
| 
 | |
|         std::map<std::string, osg::ref_ptr<osg::Image> > mImages;
 | |
| 
 | |
|         std::map<MapKey, osg::ref_ptr<osg::Texture2D> > mTextures;
 | |
| 
 | |
|         osg::ref_ptr<osg::Texture2D> mWarningTexture;
 | |
| 
 | |
|         bool mUnRefImageDataAfterApply;
 | |
| 
 | |
|         TextureManager(const TextureManager&);
 | |
|         void operator = (const TextureManager&);
 | |
|     };
 | |
| 
 | |
| }
 | |
| 
 | |
| #endif
 |