Ogre3d restoreConfig 导致应用程序在 Ubuntu 上挂起

Posted

技术标签:

【中文标题】Ogre3d restoreConfig 导致应用程序在 Ubuntu 上挂起【英文标题】:Ogre3d restoreConfig causes app to hang on Ubuntu 【发布时间】:2010-01-27 03:37:32 【问题描述】:

使用 Ogre3D、CEGUI、OIS 为 Ubuntu 构建一个应用程序,现在所有这些都可以按预期编译和运行。运行基本应用程序后,我决定现在构建一个自定义配置文件,我可以存储图形设置(即分辨率、全屏等)以及我在应用程序中需要的其他可配置设置。

作为起点,我从每次启动时调用 mRoot->showConfigDialog() 更改为:

if(!mRoot->restoreConfig())
    mRoot->showConfigDialog();

这是为了从存在的“ogre.cfg”文件中恢复配置,所以它确实做到了,但是在第一个场景创建时加载了天空盒纹理,然后就坐在那里什么都不做。

因为这不是我想要的,所以我尝试手动设置:

RenderSystem *rs = mRoot->getRenderSystemByName("OpenGL Rendering Subsystem");
mRoot->setRenderSystem(rs);
rs->setConfigOption("Full Screen","No");
rs->setConfigOption("Video Mode","1024 x 768");

这些与我之前在 showConfigDialog() 函数中使用的“ogre.cfg”中的设置相匹配。然而,我在这个手动配置中遇到了同样的问题,在加载天空盒纹理时它只是停止了。

我无法弄清楚为什么这些更改对应用程序的运行方式有任何影响,而且由于 OIS 获取输入并将鼠标锁定在屏幕上,我在尝试使用 gdb 进行调试时遇到了麻烦。

【问题讨论】:

【参考方案1】:

关于鼠标锁定,您可以在另一台显示器上运行 gdb。它可以是同一台计算机上的显示器(包括像 Xephyr 这样的选项,它创建嵌套在当前显示器中的虚拟显示器,或者只是不同显示器上的第二个会话 - 如果您有一个运行两个或三个 X 会话的工作 .xinitrc一次很简单),或者它可以在您网络上的另一台机器上(即通过 ssh -X)。

【讨论】:

以上是关于Ogre3d restoreConfig 导致应用程序在 Ubuntu 上挂起的主要内容,如果未能解决你的问题,请参考以下文章

在 Win8 中使用 GCC、C::B 安装 Ogre3D

如何在Ogre3d中正确地向Hardwarepixelbuffer提供数据?

Ogre3D : 构建示例程序 (Samples/Tutorial/Bootstrap.cpp)

Qt + Ogre3D。我无法构建一个非常简单的示例

转载Ogre3d 2.1 源码编译安装教程

使用Ogre3D从光标坐标导出光线