RenderTarget::~RenderTarget() { // Delete viewports for (ViewportList::iterator i = mViewportList.begin(); i != mViewportList.end(); ++i) { fireViewportRemoved(i->second); OGRE_DELETE (*i).second; } // Write closing message LogManager::getSingleton().stream(LML_TRIVIAL) << "Render Target '" << mName << "' " << "Average FPS: " << mStats.avgFPS << " " << "Best FPS: " << mStats.bestFPS << " " << "Worst FPS: " << mStats.worstFPS; }
//----------------------------------------------------------------------------- Function::~Function() { for (FunctionAtomInstanceIterator it=mAtomInstances.begin(); it != mAtomInstances.end(); ++it) OGRE_DELETE (*it); mAtomInstances.clear(); for (ShaderParameterIterator it = mInputParameters.begin(); it != mInputParameters.end(); ++it) (*it).setNull(); mInputParameters.clear(); for (ShaderParameterIterator it = mOutputParameters.begin(); it != mOutputParameters.end(); ++it) (*it).setNull(); mOutputParameters.clear(); for (ShaderParameterIterator it = mLocalParameters.begin(); it != mLocalParameters.end(); ++it) (*it).setNull(); mLocalParameters.clear(); }
extern "C" int APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) { // Remove this if you use lpReserved UNREFERENCED_PARAMETER(lpReserved); if (dwReason == DLL_PROCESS_ATTACH) { TRACE0("AxisGrid.DLL Initializing!\n"); // Extension DLL one-time initialization if (!AfxInitExtensionModule(AxisGridDLL, hInstance)) return 0; // Insert this DLL into the resource chain // NOTE: If this Extension DLL is being implicitly linked to by // an MFC Regular DLL (such as an ActiveX Control) // instead of an MFC application, then you will want to // remove this line from DllMain and put it in a separate // function exported from this Extension DLL. The Regular DLL // that uses this Extension DLL should then explicitly call that // function to initialize this Extension DLL. Otherwise, // the CDynLinkLibrary object will not be attached to the // Regular DLL's resource chain, and serious problems will // result. new CDynLinkLibrary(AxisGridDLL); g_plugin = new Ogre::AxisGridPlugin(hInstance); } else if (dwReason == DLL_PROCESS_DETACH) { TRACE0("AxisGrid.DLL Terminating!\n"); OGRE_DELETE(g_plugin); // Terminate the library before destructors are called AfxTermExtensionModule(AxisGridDLL); } return 1; // ok }
// 关闭插件 void AxisGridPlugin::shutdown() { if(!m_inited) return; m_worldEditor->getMainFrame()->removeChildViewListener(this); // 销毁网格对象 m_worldEditor->getDisplaySystem()->getMainSceneMgr()->destroyManualObject(m_gridObject); m_worldEditor->getDisplaySystem()->getMainSceneMgr()->destroySceneNode(m_gridNode->getName()); m_gridObject = 0; m_gridNode = 0; // 销毁坐标轴对象 OverlayManager::getSingleton().destroyOverlayElement(m_statElement); OverlayManager::getSingleton().destroyOverlayElement(m_axisElement); OverlayManager::getSingleton().destroy(m_axisOverlay); m_statElement = 0; m_axisOverlay = 0; m_axisElement = 0; OGRE_DELETE(m_axisRTT); m_inited = false; }
// 销毁场景系统 void ISceneSystem::shutdown() { OGRE_DELETE(s_SceneSystem); }
// 工厂对象的销毁方法 void ParticleObjectFactory::destroy(ISceneObject *obj) { OGRE_DELETE(obj); }
// 工厂对象的销毁方法 void EnvironmentObjectFactory::destroy(ISceneObject *obj) { OGRE_DELETE(obj); }
// 工厂对象的销毁方法 void CameraObjectFactory::destroy(ISceneObject *obj) { OGRE_DELETE(obj); }
// 实用这个地形操作器 void TerrainEditorPlugin::setTerrainAction(TerrainAction *action) { OGRE_DELETE(m_terrainAction); m_terrainAction = action; }
// 工厂对象的销毁方法 void BoxTriggerObjectFactory::destroy(ISceneObject *obj) { OGRE_DELETE(obj); }
// 工厂对象的销毁方法 void BillboardSetObjectFactory::destroy(ISceneObject *obj) { OGRE_DELETE(obj); }