cocos2d-x  3.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
TextureCache Class Reference

Singleton that handles the loading of textures Once the texture is loaded, the next time it will return a reference of the previously loaded texture reducing GPU & CPU memory. More...

#include <CCTextureCache.h>

Inheritance diagram for TextureCache:
Ref

Classes

struct  AsyncStruct
 

Public Member Functions

 TextureCache ()
 ctor More...
 
virtual ~TextureCache ()
 NA NA More...
 
virtual std::string getDescription () const
 NA NA More...
 
Texture2DaddImage (const std::string &filepath)
 Returns a Texture2D object given an filename. More...
 
virtual void addImageAsync (const std::string &filepath, const std::function< void(Texture2D *)> &callback)
 
virtual void unbindImageAsync (const std::string &filename)
 
virtual void unbindAllImageAsync ()
 
Texture2DaddImage (Image *image, const std::string &key)
 Returns a Texture2D object given an Image. More...
 
Texture2DaddUIImage (Image *image, const std::string &key)
 
Texture2DgetTextureForKey (const std::string &key) const
 Returns an already created texture. More...
 
Texture2DtextureForKey (const std::string &key) const
 
bool reloadTexture (const std::string &fileName)
 Reload texture from the image file If the file image hasn't loaded before, load it. More...
 
void removeAllTextures ()
 Purges the dictionary of loaded textures. More...
 
void removeUnusedTextures ()
 Removes unused textures Textures that have a retain count of 1 will be deleted It is convenient to call this method after when starting a new Scene. More...
 
void removeTexture (Texture2D *texture)
 Deletes a texture from the cache given a texture. More...
 
void removeTextureForKey (const std::string &key)
 Deletes a texture from the cache given a its key name. More...
 
std::string getCachedTextureInfo () const
 Output to CCLOG the current contents of this TextureCache This will attempt to calculate the size of each texture, and the total texture memory in use. More...
 
void waitForQuit ()
 
- Public Member Functions inherited from Ref
void retain ()
 Retains the ownership. More...
 
void release ()
 Releases the ownership immediately. More...
 
Refautorelease ()
 Releases the ownership sometime soon automatically. More...
 
unsigned int getReferenceCount () const
 Returns the Ref's current reference count. More...
 
virtual ~Ref ()
 NA NA More...
 

Static Public Member Functions

static TextureCachegetInstance ()
 Returns the shared instance of the cache. More...
 
static TextureCachesharedTextureCache ()
 
static void destroyInstance ()
 purges the cache. More...
 
static void purgeSharedTextureCache ()
 
static void reloadAllTextures ()
 Reload all textures should not call it, called by frame work now the function do nothing, use VolatileTextureMgr::reloadAllTextures. More...
 

Protected Attributes

std::thread * _loadingThread
 
std::queue< AsyncStruct * > * _asyncStructQueue
 
std::deque< ImageInfo * > * _imageInfoQueue
 
std::mutex _asyncStructQueueMutex
 
std::mutex _imageInfoMutex
 
std::mutex _sleepMutex
 
std::condition_variable _sleepCondition
 
bool _needQuit
 
int _asyncRefCount
 
std::unordered_map
< std::string, Texture2D * > 
_textures
 
- Protected Attributes inherited from Ref
unsigned int _referenceCount
 count of references More...
 

Additional Inherited Members

- Protected Member Functions inherited from Ref
 Ref ()
 Constructor. More...
 

Detailed Description

Singleton that handles the loading of textures Once the texture is loaded, the next time it will return a reference of the previously loaded texture reducing GPU & CPU memory.

Constructor & Destructor Documentation

ctor

virtual ~TextureCache ( )
virtual

NA NA

Member Function Documentation

Texture2D* addImage ( const std::string &  filepath)

Returns a Texture2D object given an filename.

If the filename was not previously loaded, it will create a new Texture2D object and it will return it. It will use the filename as a key. Otherwise it will return a reference of a previously loaded image. Supported image extensions: .png, .bmp, .tiff, .jpeg, .pvr

Texture2D* addImage ( Image image,
const std::string &  key 
)

Returns a Texture2D object given an Image.

If the image was not previously loaded, it will create a new Texture2D object and it will return it. Otherwise it will return a reference of a previously loaded image. The "key" parameter will be used as the "key" for the cache. If "key" is nil, then a new texture will be created each time.

virtual void addImageAsync ( const std::string &  filepath,
const std::function< void(Texture2D *)> &  callback 
)
virtual
Texture2D* addUIImage ( Image image,
const std::string &  key 
)
inline
static void destroyInstance ( )
static

purges the cache.

It releases the retained instance.

Since
v0.99.0
std::string getCachedTextureInfo ( ) const

Output to CCLOG the current contents of this TextureCache This will attempt to calculate the size of each texture, and the total texture memory in use.

Since
v1.0
virtual std::string getDescription ( ) const
virtual

NA NA

static TextureCache* getInstance ( )
static

Returns the shared instance of the cache.

Texture2D* getTextureForKey ( const std::string &  key) const

Returns an already created texture.

Returns nil if the texture doesn't exist.

Since
v0.99.5
static void purgeSharedTextureCache ( )
static
static void reloadAllTextures ( )
static

Reload all textures should not call it, called by frame work now the function do nothing, use VolatileTextureMgr::reloadAllTextures.

bool reloadTexture ( const std::string &  fileName)

Reload texture from the image file If the file image hasn't loaded before, load it.

Otherwise the texture will be reloaded from the file image. The "filenName" parameter is the related/absolute path of the file image. Return true if the reloading is succeed, otherwise return false.

void removeAllTextures ( )

Purges the dictionary of loaded textures.

Call this method if you receive the "Memory Warning" In the short term: it will free some resources preventing your app from being killed In the medium term: it will allocate more resources In the long term: it will be the same

void removeTexture ( Texture2D texture)

Deletes a texture from the cache given a texture.

void removeTextureForKey ( const std::string &  key)

Deletes a texture from the cache given a its key name.

Since
v0.99.4
void removeUnusedTextures ( )

Removes unused textures Textures that have a retain count of 1 will be deleted It is convenient to call this method after when starting a new Scene.

Since
v0.8
static TextureCache* sharedTextureCache ( )
static
Texture2D* textureForKey ( const std::string &  key) const
inline
virtual void unbindAllImageAsync ( )
virtual
virtual void unbindImageAsync ( const std::string &  filename)
virtual
void waitForQuit ( )

Member Data Documentation

int _asyncRefCount
protected
std::queue<AsyncStruct*>* _asyncStructQueue
protected
std::mutex _asyncStructQueueMutex
protected
std::mutex _imageInfoMutex
protected
std::deque<ImageInfo*>* _imageInfoQueue
protected
std::thread* _loadingThread
protected
bool _needQuit
protected
std::condition_variable _sleepCondition
protected
std::mutex _sleepMutex
protected
std::unordered_map<std::string, Texture2D*> _textures
protected

The documentation for this class was generated from the following file: