【发布时间】:2013-09-25 13:09:27
【问题描述】:
我对这个错误束手无策。任何有关如何追踪它的建议将不胜感激。
背景:
我一直在尝试将 ogre3d 视图实现为 Qt5 中的 QQuickItem。 有一个例子(qmlogre)表明它是可能的。需要的示例代码 对 Win32 进行了大量重构,并不仅仅只是演示。这个例子只是一个概念证明。
问题:
当我在 Ogre 代码 (SceneManager::createEntity) 中调用特定方法时,Qt 项目将不再呈现。如果我注释掉对该方法的调用,它会呈现良好。如果我注释掉方法中的代码并将其替换为“return 0”,它将不再呈现。有问题的代码与图形无关(它将 3d 实体加载到内存中)。
我的尝试:
- 检查了显示异常的 Ogre 日志。
- 将 Qt 日志记录重定向到文件以查看警告/异常。
- 已检查“this”指针。我在方法的入口处动态地将“this”强制转换为它正在运行的类并接收到一个非空指针。所以 rtti 认为它是一个有效的类指针。
- 为确保 Qt 代码正确,我将 qmlogre 示例中的自定义呈现代码替换为呈现纯色矩形的代码。
- 我似乎没有失忆
我可以在 valgrind 下运行如此庞大而复杂的东西吗?有没有类似的有用的工具? (编译器是Qt提供的Mingw v5.1在Windows 7上下载)
我知道 Qt5 默认是线程化的。如何判断是否超出了线程堆栈大小?
Ogre 不是线程安全的。 Qt 代码是否有可能同时在不同的线程上运行并导致食人魔崩溃?我的代码由来自 QML 的事件调用(它在 Qt 插槽中)。
【问题讨论】:
-
你试过在 ogre config 中使用不同的渲染系统吗?就目前而言,您的项目与特殊的 RS 没有太大关系。
-
Qt 使用 OpenGL 进行渲染。我不确定你会如何在同一个窗口中混合 OpenGL 和 DirectX。
-
我的意思是,也许当前的 ogre rs 配置的兼容性有问题,而你所期望的呢?