2014-09-19 29 views
1

我想用在給定的代碼嵌入食人魔Qt中: https://github.com/gklingler/QOgreWidget斷言失敗錯誤食人魔RenderWindow的

而且它沒有任何麻煩運行我的系統上正常,但當我嘗試添加同樣在我的Qt應用程序,我得到以下錯誤:

SceneManagerFactory for type 'PCZSceneManager' registered. 
MovableObjectFactory for type 'PCZLight' registered. 
MovableObjectFactory for type 'Portal' registered. 
MovableObjectFactory for type 'AntiPortal' registered. 
PCZone Factory Type 'ZoneType_Octree' registered 
SceneManagerFactory for type 'OctreeSceneManager' registered. 
app: ../app/ogre/ogrebasewidget.cpp:45: OgreBaseWidget::OgreBaseWidget(Ogre::Root*,      OgreEventHandler*, QWidget*): Assertion `ogreWinId' failed. 
The program has unexpectedly finished. 

錯誤指向該代碼片段:

Ogre::String winHandle; 

winHandle = Ogre::StringConverter::toString((unsigned long) (QX11Info::display())); 
winHandle += " : "; 
winHandle = Ogre::StringConverter::toString((unsigned long) (QX11Info::appScreen())); 
winHandle += " : "; 
winHandle = Ogre::StringConverter::toString((unsigned long) (winId())); 

Ogre::NameValuePairList params; 
params["parentWindowHandle"] = winHandle; 
params["FSAA"] = Ogre::String("8"); 

int w = width(); 
int h = height(); 
mOgreRenderWindow = mOgreRoot->createRenderWindow("OgreWidget_RenderWindow", 
                qMax(w, 640), 
                qMax(h, 480), 
                false, &params); 
mOgreRenderWindow->setActive(true); 
mOgreRenderWindow->setVisible(true); 

WId ogreWinId = 0x0; 
mOgreRenderWindow->getCustomAttribute("WINDOW", &ogreWinId); 
assert(ogreWinId); 
QWidget::create(ogreWinId); 
setAttribute(Qt::WA_OpaquePaintEvent); 

我已經包含<cassert>在標題中。幫我弄清楚這一點。 :(

+0

交叉帖子:http://www.ogre3d.org/forums/viewtopic.php?f=1&t=81728 – 2014-09-19 08:42:24

+0

我想盡快解決它。我不認爲這是在不同論壇尋求幫助的問題。 – 2014-09-19 09:16:31

+0

是的,但請在下一次明確說明,如下所述:http://meta.stackoverflow.com/a/266159/1947205 – 2014-09-19 09:31:22

回答

0

我發現爲什麼這是給這個錯誤的原因。 我已經安裝了食人魔的舊版本(1.7.4),以及與新的1.9版本一起。

所以我清除此舊版本從我的系統和瞧,它的工作就像一個魅力。