当 运行 QML 应用程序时,Qt 5.6 中列入黑名单的显卡会发生什么情况?

What happens to blacklisted graphic cards in Qt 5.6 when running a QML app?

即将推出的 Qt 5.6 引入了一个黑名单来标记一些已知对 OpenGL 或 Angle 支持不足的显卡。

确认例如

但是同时设置了 disable_desktopgldisable_angle 的卡上的 QML 应用程序会怎样?这些用户根本不能 运行 QML 应用程序吗?

他们不能使用 OpenGL 来加速 Qt Quick,不行。这是一个非常严重的缺点。不幸的是,OpenGL 在 Windows 上的状态是一场噩梦。 "average" Windows 计算机将有一个带有古老驱动程序的 Intel-based GPU,这些驱动程序的错误足以导致 Qt 甚至根本不尝试使用任何 3D(OpenGL 或 Direct3D)。 NVIDIA 和 AMD 通常更好,因为至少它们往往更 up-to-date.

通常升级 Intel 驱动程序可以解决大部分问题,但您并不总是能够要求您的用户升级他们的驱动程序(他们甚至可能无法这样做,例如缺少管理员权限,and/or 使用供应商固定驱动程序版本的笔记本电脑)。

请注意,即使是其他项目,例如 Chromium 或 Firefox,也有自己的 fine-grained 驱动程序错误黑名单 (example)。

如果您的卡完全被列入黑名单,您可以:

  • 使用 OpenGL CPU 实现,例如 Mesa。如果您将 opengl32sw.dll 与您的应用程序一起发送,它可以被 Qt 提取。 See the explaination here.
  • 使用 Qt Quick 2D renderer,它是 Qt Quick 项目子集的专用 CPU-based 渲染器。与 Mesa 相比,它快得令人难以置信(因为它不需要通过 OpenGL 管道来绘制,比如说,一个矩形——它可以只使用 2D 光栅化器绘制矩形);另一方面,某些东西会停止工作,比如着色器效果。目前它仅在商业许可下可用,但在 5.8 中它将开源。

(吹毛求疵:QML 是 语言 ,Qt Quick 是 framework/library 构建用户界面的语言,您可以使用 QML 编程。