2011年10月1日 星期六

改善 QML 圖型渲染效能

Standard
雖然 Nokia 擁抱了 Microsoft,但不可否認,其旗下的 Qt Framework 經過十載演進,也有 Open Source 出來,實在是個好東西。因此,筆者認為 Nokia 的決定並不會影響我們繼續使用 Qt 的意願,長期在 Linux 下並以 Qt 為基礎的 KDE 桌面環境,就足夠證明了 Qt 尚未死。

而最近筆者使用 QML 實做了一些應用程式,發現圖型渲染效能並不是非常好。猜想是和 Android 有相同的問題,於是著手將程式改用 OpenGL 來繪圖,果然,效能立即獲得大幅度改善:
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QGLWidget *glWidget;
    QGLFormat format = QGLFormat::defaultFormat();

    /* Create OpenGL Widget to render QML */
    format.setSampleBuffers(false);
    glWidget = new QGLWidget(format);
    glWidget->setAutoFillBackground(false);

    /* Create QDeclarativeView to open QML file */
    QDeclarativeView *viewer = new QDeclarativeView;
    viewer->setViewport(glWidget);
    viewer->setSource(QUrl::fromLocalFile("main.qml"));
    viewer->show();

    return app.exec();
}