0

我有一个围绕 QGraphicsView/Scene 构建的 Qt 应用程序。图形性能很好,动画非常流畅,一个简单的高分辨率计时器显示帧的绘制速度高达 400 fps。但是,根据任务管理器,该应用程序始终使用 15% 的 cpu。我已经在 Visual Studio 2012 中对其进行了性能分析,结果表明大部分样本都是在 QApplication::notify 函数中获取的。 从 Visual Studio 采样配置文件报告

我已将视口设置为使用 QGLWidget 进行渲染,希望将绘图功能卸载到 GPU 会有所帮助,但这对 CPU 使用率完全没有影响。

这是正常的吗?我可以做些什么来减少 CPU 使用率吗?

Process Explorer 性能选项卡 Process Explorer 性能图

4

1 回答 1

2

好吧,你有它 - 400 FPS 帧率。这会以 100% 的速度加载您的一个核心。人们通常限制帧率是有原因的。高帧率给驱动图形的 Qt 事件系统带来了压力。

将帧速率限制为 60 FPS 并解决问题。

除非发生更新单个图形小部件的事件,否则我不会更新视图

不要为每个场景元素更改更新场景。这可能是开销的原因。您可以进行多个场景项目更改,但以固定速率渲染场景。

另外,我注意到你说graphicswidget- 我假设是QGraphicsWidget- 这也可能是有问题的。QObject派生类有点重,Qt 事件系统也有开销,这QGraphicsItem就是没有QObject派生正则的原因。如果您过度使用图形小部件,这可能是开销的来源,所以看看您是否可以使用较轻的QGraphicsItem类和一些较轻的机制来驱动您的场景。

于 2015-11-16T15:01:55.953 回答