Ogre RenderWindow的断言失败错误

Assertion Failed error for Ogre RenderWindow

本文关键字:失败 错误 断言 RenderWindow Ogre      更新时间:2023-10-16

我正试图使用以下代码将Ogre嵌入Qt中:https://github.com/gklingler/QOgreWidget

它在我的系统上运行良好,没有任何问题,但当我试图在我的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>。帮我弄清楚。:(

我找到了它出现此错误的原因。我安装了Ogre的旧版本(1.7.4)以及新的1.9版本。

所以我从我的系统中清除了这个旧版本,瞧,它就像一个魅力。