Ogre求助:有多个模型,如sky.mesh有两套材质脚本,程序在sky.material不存在时加载all.material(所有材质集合),经过一定操作后生成sky.material.
问:1.生成sky.material后怎样加载sky.material而不再加载all.material?
2.生成sky.material后怎样让程序刷新去加载它并显示效果?
说明:1.Ogre + MFC
2.sky.material是从all.material里面分离出来的模型相应脚本,其内容可能会被修改。
问:1.生成sky.material后怎样加载sky.material而不再加载all.material?
2.生成sky.material后怎样让程序刷新去加载它并显示效果?
说明:1.Ogre + MFC
2.sky.material是从all.material里面分离出来的模型相应脚本,其内容可能会被修改。
2.调用sky.material时:Ogre::ResourceGroupManager::getSingleton().destroyResourceGroup( c_InternMeshGroup );
Ogre::ResourceGroupManager::getSingleton().createResourceGroup( c_InternMeshGroup );
Ogre::ResourceGroupManager::getSingleton().addResourceLocation( directory, "FileSystem",c_InternMeshGroup ); try
{
Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
}
catch(...)
{
//Some material or may be even an unrelated scripts crashed the engine.
//Load the model plain simple, no materials. Only skeleton and mesh.
}3.在调用all.material时: m_pmeshName = MeshName;
if( m_pmeshEntity )
{
m_pmeshSceneNode->getParentSceneNode()->removeAndDestroyChild( m_pmeshSceneNode->getName() );
m_pSceneMgr->destroyEntity( m_pmeshEntity );
} try
{
Ogre::ResourceGroupManager::getSingleton().destroyResourceGroup( c_InternMeshGroup );
}
catch( ... )
{ }
try
{
Ogre::ResourceGroupManager::getSingleton().destroyResourceGroup( "test" );
}
catch(...)
{
}
Ogre::ResourceGroupManager::getSingleton().createResourceGroup( "test" );
Ogre::ResourceGroupManager::getSingleton().addResourceLocation( "/sky", "FileSystem","test" );
Ogre::ResourceGroupManager::getSingleton().addResourceLocation( "/sky/modifyMaterial", "FileSystem","test" ); try
{
Ogre::ResourceGroupManager::getSingleton().initialiseResourceGroup( "test" );
}
catch( ... )
{
//Some material or may be even an unrelated scripts crashed the engine.
//Load the model plain simple, no materials. Only skeleton and mesh.
}并用m_pmeshEntity->setMaterialName( matrialName, "test");
4.我将sky.material中的材质贴图替换了,以便观察效果,但发现这两次调用的效果一样,都解析的all.material里面的脚本,不知错出在哪里了,望赐教