在没有硬件加速的情况下在Windows上部署Qt5

Qt5可以通过使用ANGLE来使用OpenGL驱动程序或DirectX驱动程序。 由于我们不能依赖已安装的OpenGL驱动程序,因此我们需要使用ANGLE后端。 不幸的是,这并不能解决所有的部署问题,特别是在没有硬件加速的Windows虚拟机上。 在这些系统上,我们收到一条错误消息,说OpenGL上下文创build失败。

屏幕截图:无法为格式QSurfaceFormat创buildOpenGL上下文

我们正在部署所有必需的库(libEGL.dll libGLESv2.dll libeay32.dll msvcp110.dll msvcr110.dll d3dcompiler_46.dll),但我们仍然收到此错误消息。

你如何部署一个QML应用程序,需要在没有OpenGL驱动的最终用户计算机上运行,​​以及在没有Direct3D加速的虚拟机上运行?

在Qt wiki上有一个提到这个问题的页面,但是这对解决这个问题并没有什么帮助。

Qt 5.4.0更新:

我迄今为止的发现是:

  • 设置QT_ANGLE_PLATFORM = warp – >创build一个没有内容的窗口。
  • 按预期设置QT_ANGLE_PLATFORM = d3d9 – >同样的错误对话框。
  • 按预期设置QT_ANGLE_PLATFORM = d3d11 – >同样的错误对话框。
  • 设置QT_OPENGL = desktop =>与QT_ANGLE_PLATFORM = warp相同。
  • 如预期的那样设置QT_OPENGL = angle – >相同的错误对话框。
  • 设置QT_OPENGL = software + opengl32sw.dll(mesa for windows) – >不可预知:可能运行,可能会崩溃,可能会显示错误对话框。

Qt Quick 2D渲染器的更新

尽pipeMesa似乎是一个部分的解决scheme,但在Qt 5.4.0中,移植似乎经常崩溃。

另一个后备可能是Qt Quick 2D渲染器,但不幸的是这也崩溃了。

  • 复制softwarecontext.dll到/ scenegraph +设置QMLSCENE_DEVICE = softwarecontext – > crash

一些用户体验后更新:

angular度

  • 在一些系统上有一些渲染错误
  • 在所有系统上都不可靠

angular度与变形

  • 不可靠的

桌面OpenGL

  • 默认实现的OpenGL 1.1太旧了。
  • 即使OpenGL版本正常,也不可靠。
  • 如果使用Qt,则会导致bug

QtQuick2dRenderer

  • 有一些主要的渲染问题
  • 崩溃,冻结
  • 适用于没有硬件加速的系统

Mesa OpenGL后端

  • 似乎目前相当可靠
  • 一般来说很慢,在一些系统上很慢。
  • 重部署重量

结论:这些系统还没有真正的解决scheme

更新Qt 5.5

Anno 2015:破碎的graphics驱动器仍然是坏的。

我现在的结论是:

  1. 如果可能,使用QtQuick2dRenderer。
  2. 否则使用Mesa后端。
  3. 跳过angular度,跳过桌面OpenGL,跳过扭曲。

QT 5在某些硬件配置上与opengl具有巨大的兼容性问题英特尔HD3000驱动程序和Nvidia / ATI卡的组合在Windows 10上不起作用。https://bugreports.qt.io/browse/QTBUG-42240

英特尔放弃支持这张卡,但他们的驱动程序有导致崩溃的错误。

如果你想用HD3000来支持客户,你不能依靠硬件的opengl。

在Windows下,opengl32.dll是默认的OpenGL驱动程序。 它实现了OpenGL 1.1(真正的旧版本)。 ANGLE具有OpenGL ES 2.0的基准,并且需要安装DirectX 9/11来将呼叫映射到。

所以,如果你有一个没有安装OpenGL驱动的视频卡,一个小于2.0的OpenGL驱动和/或没有安装DirectX 9/11,你的应用程序就不能工作。

关于虚拟化和3D加速,这些可能值得一读:

此外,如果您在VirtualBox下运行多显示器Windows环境,则3D加速将被禁用。