mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-11-04 06:26:39 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			64 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; }
 | 
						|
 | 
						|
    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::observer_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
 |