本文整理汇总了C++中TextureList::erase方法的典型用法代码示例。如果您正苦于以下问题:C++ TextureList::erase方法的具体用法?C++ TextureList::erase怎么用?C++ TextureList::erase使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TextureList
的用法示例。
在下文中一共展示了TextureList::erase方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: freePooledTextures
//---------------------------------------------------------------------
void CompositorManager::freePooledTextures(bool onlyIfUnreferenced)
{
if (onlyIfUnreferenced)
{
for (TexturesByDef::iterator i = mTexturesByDef.begin(); i != mTexturesByDef.end(); ++i)
{
TextureList* texList = i->second;
for (TextureList::iterator j = texList->begin(); j != texList->end();)
{
// if the resource system, plus this class, are the only ones to have a reference..
// NOTE: any material references will stop this texture getting freed (e.g. compositor demo)
// until this routine is called again after the material no longer references the texture
if (j->useCount() == ResourceGroupManager::RESOURCE_SYSTEM_NUM_REFERENCE_COUNTS + 1)
{
TextureManager::getSingleton().remove((*j)->getHandle());
j = texList->erase(j);
}
else
++j;
}
}
for (ChainTexturesByDef::iterator i = mChainTexturesByDef.begin(); i != mChainTexturesByDef.end(); ++i)
{
TextureDefMap& texMap = i->second;
for (TextureDefMap::iterator j = texMap.begin(); j != texMap.end();)
{
const TexturePtr& tex = j->second;
if (tex.useCount() == ResourceGroupManager::RESOURCE_SYSTEM_NUM_REFERENCE_COUNTS + 1)
{
TextureManager::getSingleton().remove(tex->getHandle());
texMap.erase(j++);
}
else
++j;
}
}
}
else
{
// destroy all
for (TexturesByDef::iterator i = mTexturesByDef.begin(); i != mTexturesByDef.end(); ++i)
{
OGRE_DELETE_T(i->second, TextureList, MEMCATEGORY_GENERAL);
}
mTexturesByDef.clear();
mChainTexturesByDef.clear();
}
}