2016-01-14 40 views

回答

3

他們不能使用OpenGL來加速Qt Quick,沒有。這是一個非常嚴重的缺點。不幸的是,Windows上的OpenGL的狀態是一場噩夢。 「平均」Windows計算機將有一個基於英特爾的GPU與古代驅動程序,這足以導致Qt甚至不嘗試使用任何3D(OpenGL或Direct3D)。 NVIDIA和AMD通常會更好,至少他們往往更新。

通常升級英特爾驅動程序可解決大多數問題,但您並不總是要求用戶升級其驅動程序(他們甚至可能無法這樣做,例如缺少管理員權限和/或使用筆記本電腦的驅動程序版本已被供應商固定)。

請注意,即使其他項目(例如Chromium或Firefox)也有其自己的細粒度驅動程序bug黑名單(example)。

如果你的卡是完全列入黑名單,您可以:

  • 使用OpenGL的CPU實現,如梅薩。如果您將opengl32sw.dll與您的應用程序一起發貨,它可以由Qt提取。 See the explaination here
  • 使用Qt Quick 2D renderer,這是一個專門針對Qt Quick項目子集的基於CPU的渲染器。與Mesa相比,它的速度非常快(因爲它不需要通過OpenGL管道來繪製矩形 - 它可以使用2D光柵化器繪製矩形)。另一方面,某些事情停止工作,比如着色器效果。目前它只能在商業許可下使用,但在5.8版本中它將是開源的。

(雞蛋裏挑骨頭:QML是語言,Qt Quick的是框架/庫來構建你的程序使用QML用戶界面)。

+0

謝謝。讓我們從挑剔開始,這是一個非常有趣的觀點。就我的經驗而言,Qt區分了兩種應用程序:Qt Widgets和Qt QML應用程序(確認http://doc.qt.io/qt-5/qmlapplications.html)。我鏈接的Qt模塊也被稱爲「qml」。所以問題是,是否可以編寫沒有Qt Quick的QML應用程序? –

+0

是的。例如,* Declarative State Machine框架*不使用Qt Quick,但它僅使用QML(使用* language *)。如果你沒有鏈接到Qt Quick(例如在你的'.pro'文件中使用'QT + = quick'),你將不能使用諸如「QQuickWindow」或「QQuickView」之類的類型。 OTOH:Qt Quick 2類型可通過插件提供給QML。這使您可以在QML中實際創建它們,而無需鏈接任何內容。 – peppe

+0

完美的建議,謝謝。你可以在5.8中爲2d的OpenSource添加一個引用嗎?這對我來說是新的。 –

相關問題