[英]QQuickItem will not render
我对这个错误不知所措。 关于如何追踪它的任何建议将不胜感激。
背景:
我一直在尝试将Ogre3d视图实现为Qt5中的QQuickItem。 有一个示例(qmlogre)显示了它的可能性。 该示例代码需要对Win32进行大量重构,而不仅仅是演示。 该示例仅是概念证明。
问题:
当我在Ogre代码(SceneManager :: createEntity)中调用特定方法时,Qt项目将不再呈现。 如果我注释掉对该方法的调用,它将很好。 如果我注释掉方法中的代码并将其替换为“ return 0”,它将不再呈现。 有问题的代码与图形无关(它将3d实体加载到内存中)。
我试过的
我可以在valgrind下运行这么大而复杂的东西吗? 是否有有用的类似工具? (编译器是Mingw,由Windows 7上的vt中Qt提供)
我了解默认情况下Qt5是线程化的。 如何判断是否超出线程堆栈大小?
食人魔不是线程安全的。 Qt代码是否可能同时在不同的线程上运行并导致食人魔崩溃? 我的代码由QML中的事件调用(位于Qt插槽中)。
我不了解Ogre的详细信息,但是文档说Entity类使用OpenGL缓冲区。 然后,可能在访问OpenGL后端的线程之间存在冲突。
您是否尝试过像GLIntercept或gDEBugger(cf https://www.opengl.org/wiki/Debugging_Tools )这样的OpenGL调试器?
您说要从QML内加载对象。 默认情况下,在Qt 5中,这意味着您正在Qt工作线程而不是QML渲染线程中加载对象。 这行不通。 所有Ogre调用都需要在创建Ogre的渲染线程中进行,否则您将获得未定义的行为。
我还建议您在https://github.com/advancingu/QmlOgre上查看QML Ogre示例的分支。 这是您提到的示例代码,但已重构为库。 尚无法将产品投入生产还为时过早,但是您也许可以从中获得一些有关代码的想法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.