Operating System: Windows 10
Render System: OpenGL
Hi,
Could someone clarify for me please how to handle the clean-up of specifically Ogre objects that have been created using shared_ptrs? In this particular case, various objects have been created using Ogre Overlay, as shown below:
Code: Select all
mOverlaySystem.reset(new Ogre::OverlaySystem());
mSceneManager->addRenderQueueListener(mOverlaySystem.get());
mOverlay.reset(Ogre::OverlayManager::getSingleton().create("Overlay"));
mPanel.reset(static_cast<Ogre::OverlayContainer*>(Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", "Test")));
mPanel->setMetricsMode(Ogre::GMM_PIXELS);
mPanel->setPosition(0.0f, 0.0f);
mPanel->setDimensions(1.0f, 1.0f);
Ogre::FontPtr pFont = Ogre::FontManager::getSingletonPtr()->create("georgia", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
pFont->setType(Ogre::FT_TRUETYPE);
pFont->setSource("georgia.ttf");
pFont->setTrueTypeSize(16);
pFont->load();
mOverlay->add2D(m_panel.get());
mOverlay->show();
Code: Select all
void OverlayManager::destroyAll(void)
{
for (OverlayMap::iterator i = mOverlayMap.begin();
i != mOverlayMap.end(); ++i)
{
OGRE_DELETE i->second; //Access violation here
}
mOverlayMap.clear();
mLoadedScripts.clear();
}
Thanks in advance