2

为了在项目中使用它,我一直在研究关于OpenGL 的 Qt Quarterly文章。QGraphicsScene我已经决定使用 Qt,因为它具有全面的卓越性,但已经走上了实现从QGLWidget. 使用引用文章中的技术意味着我也可以将 Qt 小部件用于 UI,使程序仅依赖于 Qt(而不是 CEGUI 或类似的)。

无论如何,我一直在桌面 Linux 机器上运行示例,它有一个 Core i7 和一个相当好的 Nvidia 卡并且运行良好,但是我在我的 2010 MacBook Pro(Core i5 和 Nvidia 330)上运行确实很差,尤其是使用鼠标与之交互时。

问题:任何人都可以提出提高这个样本性能的方法吗?我不是 Qt 专家,但我认为响应不佳的原因update()是鼠标处理代码中的调用update()以及方法本身末尾的定时调用。我认为需要的是一个后台线程来更新对象移动和一个定时但不断的调用update().

任何人都可以对此发表评论吗?

编辑:我已经尝试删除所有对update()的调用,除了定时器重置,它几乎没有什么区别。

4

1 回答 1

1

不幸的是,您在使用该文章中的建议时获得的性能非常糟糕。我们在嵌入式系统上进行了尝试,但速度非常慢。

对我们来说,解决方案是使用 QML,这是 Qt 4.7 中新的“声明式”UI 功能。我们在 C++ 应用程序中嵌入了 QML。我们看到了覆盖在 GL 场景之上的 QML 小部件的巨大速度改进。

我们在 C++ 应用程序中使用 QDeclarativeView 小部件,它能够显示我们的 QML 内容。请参阅:http ://doc.qt.io/archives/qt-4.7/qdeclarativeview.html 。

这在桌面上应该可以正常工作(在 Ubuntu 上适用于我)。

更多有用的链接:

在 C++ 应用程序中使用 QML 绑定

将 QML 代码与现有 Qt UI 代码集成

更新!2015 年 1 月20 日: 在 Qt5.4 中有一个名为 QOpenGLWidget 的新类,它基本上使您可以使用具有出色性能的 OpenGL 背景的“经典”Qt 小部件。他们终于直接解决了这个问题!阅读博客文章,然后阅读文档:

关于 QOpenGLWidget 的 Qt 博客文章

QOpenGLWidget 文档

于 2011-05-06T21:36:46.127 回答