Assertion failed!
Expression::ms_Singleton
我的ogre里的单件对象到是建立了,mRoot之类的都有了。
代码是网上找的:
class TutorialApplication:public ExampleApplication
{
public:
CEGUI::OgreRenderer* mGUIRenderer;
CEGUI::Window* mEditorGuiSheet;
CEGUI::System* mGUISystem;
public:
TutorialApplication()
:mGUIRenderer(NULL),mEditorGuiSheet(NULL)
{
}
~TutorialApplication()
{
/**//*if(mEditorGuiSheet)
{
CEGUI::WindowManager::getSingleton().destroyWindow(mEditorGuiSheet);
}*/
}
protected:
void createScene(void)
{
//CEGUI::WindowManager& winmgr = CEGUI::WindowManager::getSingleton();
CEGUI::SchemeManager::getSingleton().create("TaharezLook.scheme");
CEGUI::System::getSingleton().setDefaultMouseCursor("TaharezLook", "MouseArrow");
CEGUI::FontManager::getSingleton().create("DejaVuSans-10.font");
// 在此载入layout文件
// 这个就是要在实际当中经常使用的
CEGUI::Window* sheet = CEGUI::WindowManager::getSingleton().loadWindowLayout("MyUI.layout");
CEGUI::System::getSingleton().setGUISheet(sheet);
Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");
Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
headNode->attachObject(ogreHead);
// Set ambient light
mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5, 0.5, 0.5));
// Create a light
Ogre::Light* l = mSceneMgr->createLight("MainLight");
l->setPosition(20,80,50);
//mSceneMgr->setAmbientLight(ColourValue(1, 1, 1));
//mSceneMgr->setSkyDome(true, "Examples/CloudySky", 5, 8);
}
谢谢指教!
6 个解决方案
#1
ogre的代码是开源的。
关于这个问题我觉得你应该自己跟踪下哪里有问题,毕竟你能见到所有源代码。
(ps: C++这种语法真让人看着头疼啊……)
关于这个问题我觉得你应该自己跟踪下哪里有问题,毕竟你能见到所有源代码。
(ps: C++这种语法真让人看着头疼啊……)
#2
自己耐心好好看看吧
#3
提问的时候很明显已经调试,跟踪过了,问题是出在那句
CEGUI::SchemeManager::getSingleton().create("TaharezLook.scheme"); 上,当获取单件的对象时,assert就报错。
CEGUI::SchemeManager::getSingleton().create("TaharezLook.scheme"); 上,当获取单件的对象时,assert就报错。
#4
检测下资源粗存在不?
看这个单例初始化了吗?
看这个单例初始化了吗?
#5
#6
我想你是升级了CEGUI到新版本了吧。那个断言是说SchemeManager的mSingleton指针没有被赋过值(这时候如果访问别的CEGUI的Singleton也会这样的)。估计是升级后单件的实现不太一样了。
简单地说,估计现在你需要给CEGUI系统初始化一下再用它:就是先调用一下CEGUI::System::create。
看看可不可以。
简单地说,估计现在你需要给CEGUI系统初始化一下再用它:就是先调用一下CEGUI::System::create。
看看可不可以。
#1
ogre的代码是开源的。
关于这个问题我觉得你应该自己跟踪下哪里有问题,毕竟你能见到所有源代码。
(ps: C++这种语法真让人看着头疼啊……)
关于这个问题我觉得你应该自己跟踪下哪里有问题,毕竟你能见到所有源代码。
(ps: C++这种语法真让人看着头疼啊……)
#2
自己耐心好好看看吧
#3
提问的时候很明显已经调试,跟踪过了,问题是出在那句
CEGUI::SchemeManager::getSingleton().create("TaharezLook.scheme"); 上,当获取单件的对象时,assert就报错。
CEGUI::SchemeManager::getSingleton().create("TaharezLook.scheme"); 上,当获取单件的对象时,assert就报错。
#4
检测下资源粗存在不?
看这个单例初始化了吗?
看这个单例初始化了吗?
#5
#6
我想你是升级了CEGUI到新版本了吧。那个断言是说SchemeManager的mSingleton指针没有被赋过值(这时候如果访问别的CEGUI的Singleton也会这样的)。估计是升级后单件的实现不太一样了。
简单地说,估计现在你需要给CEGUI系统初始化一下再用它:就是先调用一下CEGUI::System::create。
看看可不可以。
简单地说,估计现在你需要给CEGUI系统初始化一下再用它:就是先调用一下CEGUI::System::create。
看看可不可以。