QtQuick 1和QtQuick 2的FPS相同

时间:2016-07-19 06:13:25

标签: qt gpu qtquick2 frame-rate qt-quick

我有一个基于QML的Qt UI应用程序,可播放音频。该应用程序是使用Qt 4.x开发的,并且在所有QML文件中都有import QtQuick 1.0个语句。我尝试通过派生QDeclarativeItem类并实现paint(QPainter *)函数来计算应用程序的FPS。 FPS大约是60.

稍后,我移植了相同的应用程序以使用QtQuick 2.0。它在QML文件中包含import QtQuick 2.0个语句,并使用QtQuick 2.0运行应用程序所需的一些其他更改。同样,我尝试通过派生QQuickPaintedItem并实现paint(QPainter *painter)函数来计算应用程序的FPS。计算出的FPS也是60左右。

我预计基于QtQuick 1.0的第一个应用程序与第二个应用程序相比具有更低的FPS。但是,事实并非如此。这种行为有望吗?我的应用程序中没有任何OpenGL调用。该应用程序只有正常的QML组件,如Rectangle, Item, Image

我的FPS计算方法基于另一个线程Show FPS in QML

中的解决方案

1 个答案:

答案 0 :(得分:0)

使动画看起来平滑的最佳FPS为60。同样,大多数典型显示器的刷新率为60 HZ。
因此,理想的FPS为60或更多是浪费的。因此,大多数UI框架将FPS限制为60(more info about vsync)。

但是要使之成为可能,应用必须在每个渲染之间的〜16ms内完成其工作(1000ms / 60fps〜= 16ms)。换句话说,如果应用程序运行动画并绑定某些东西并计算方程式等,则应用程序必须在16ms内完成它们。否则,用户将丢帧,从而导致跳帧。

QtQuick 2闪耀在这里!因为它使用了一些优雅的技术,例如多线程UI,JIT,QMLCompiler等,并使用优化的C ++代码进行了增强。

结果是,使用QtQuick 2制作的应用将更加流畅和流畅。