首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QQuickItem不会呈现

QQuickItem不会呈现
EN

Stack Overflow用户
提问于 2013-09-25 13:09:27
回答 2查看 809关注 0票数 1

我对这只虫子已经束手无策了。任何关于如何追踪它的建议将不胜感激。

背景:

我一直在尝试将ogre3d视图实现为Qt5中的一个QQuickItem。有一个例子(qmlogre)表明这是可能的。示例代码需要对Win32进行大量重构,并且所做的不仅仅是演示。这个例子只是概念的证明。

问题:

当我在Ogre代码(SceneManager::createEntity)中调用特定方法时,Qt项将不再呈现。如果我注释掉对该方法的调用,它就会呈现良好。如果我注释掉该方法中的代码并将其替换为‘返回0’,它将不再呈现。所讨论的代码与图形无关(它将三维实体加载到内存中)。

我尝试过的:

  • 检查了显示异常的食人魔日志。
  • 将Qt日志重定向到文件,以查看警告/异常。
  • 检查了“这个”指针。我在方法的条目上动态地将'this‘强制转换为它正在运行的类,并接收到一个非空指针。所以rtti认为它是一个有效的类指针。
  • 为了确保Qt代码正确,我将qmlogre示例中的自定义呈现代码替换为呈现平面颜色矩形的代码。
  • 我似乎没有失去记忆

我能管理这么大这么复杂的东西吗?是否有类似的有用工具?(在Windows 7上,Qt在v5.1下载中提供的编译器是明威)

我知道默认情况下Qt5是线程化的。如何判断是否已超出线程堆栈大小?

食人魔不安全。Qt代码是否可能同时在不同的线程上运行,并使食人魔崩溃?我的代码是由来自QML的事件调用的(它位于Qt槽中)。

EN

回答 2

Stack Overflow用户

发布于 2013-09-25 17:47:30

我不知道Ogre的细节,但是文档中说实体类使用OpenGL缓冲区。那么,您可能会在访问OpenGL后端的线程之间发生冲突。

您是否尝试过OpenGL调试器(如GLIntercept或gDEBugger (cf Tools) )?

票数 0
EN

Stack Overflow用户

发布于 2013-10-02 15:17:49

您说您正在从QML中加载对象。默认情况下,在Qt 5中,这意味着在Qt工作线程而不是QML呈现线程中加载对象。这不管用。所有Ogre调用都需要从创建Ogre的呈现线程中进行,否则您将得到未定义的行为。

我还建议在https://github.com/advancingu/QmlOgre上查看QML示例的分支。这是您提到的示例代码,但将其重构到库中。现在要接近生产还为时尚早,但是您也许可以从它中获得一些代码的想法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19005854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档