c++ - Ogre 中带有 sdkTrays 的未处理异常小部件

标签 c++ ogre3d

我对 Ogre 中的 sdkTrays 有一些严重的问题。

我的 OgreKinectGame 继承自 BaseApplication。 BaseApplication 正在使用 sdkTrayManager 创建 Logo 等。我认为这个 mTrayMgr 是继承的,也可以在我的应用程序中使用。

我正在尝试为 HUD 设置小部件,但出现未处理的异常错误。

我的 setupWidgets() 函数如下所示。

void OgreKinectGame::setupWidgets()

{

if(!mTrayMgr)
    mTrayMgr = new SdkTrayManager("InterfaceName", mWindow, mMouse);

    //mTrayMgr->destroyAllWidgets(); this caused exceptions as well
    // create check boxes to toggle the visibility of our particle systems
    const int WIDTH_UI = 160;
    // main menu
    mTrayMgr->createLabel(TL_CENTER, "mMainMenuLabel", "Main Menu", WIDTH_UI);
    mTrayMgr->createButton(TL_CENTER, "mOptionButton", "Option");
    mTrayMgr->createButton(TL_CENTER, "mCreditButton", "About");
    mTrayMgr->createButton(TL_CENTER, "mQuitButton", "Quit");

    mTrayMgr->showAll();

} Unhandled exception

最佳答案

首先,您在哪里初始化 setupWidgets()? ,在 BaseApplication 类上,他们有 setup(),你可以创建一个虚拟的这个 setup() 到你的主类,然后在那里初始化你的 setupWiget(),例如,

bool OgreKinectGame::setup(void)
{
   if (!BaseApplication::setup()) {
    return false;
   }
   // Load fonts for tray captions
   FontManager::getSingleton().getByName("SdkTrays/Caption")->load();
   setupWidgets();//initialize here for your setupWidget()
} 

第二,我觉得你的setupWidget()应该是这样的,

void OgreKinectGame::setupWidgets()
{
    const int WIDTH_UI = 160;
    // main menu
    mTrayMgr->createLabel(TL_CENTER, "mMainMenuLabel", "Main Menu", WIDTH_UI);
    mTrayMgr->createButton(TL_CENTER, "mOptionButton", "Option");
    mTrayMgr->createButton(TL_CENTER, "mCreditButton", "About");
    mTrayMgr->createButton(TL_CENTER, "mQuitButton", "Quit");
}

如果仍然崩溃,你能尝试这个解决方案并再次返回吗?

关于c++ - Ogre 中带有 sdkTrays 的未处理异常小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44497774/

相关文章:

c++ - 如何在 Ogre3d 和 PhysX 中使用 16 位高度图

c++ - vector 中的C++唯一值?

c++ - C++ 中特定位置映射的迭代器

C++ 在模板中重载 operator=

c++ - 退出程序时抛出异常(Ogre3d)

c++ - 是否可以访问 Haskell 中的底层 Window 类型?

c++ - 奇怪的食人魔错误和一个不存在的文件

c++ - const 成员结构的动态分配

c++ - 使用 Text Fixtures -- Google 测试

c++ - 如何围绕另一个对象旋转一个对象(C++ 和 Ogre3D)?