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

Seb*_*ner 24 windows opengl deployment qt qt5

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

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

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

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

Qt wiki上有一个页面提到这个问题,但这对解决它没有多大帮助.

Qt 5.4.0的更新:

到目前为止我的发现是:

  • 设置QT_ANGLE_PLATFORM = warp - >创建一个没有内容的窗口.
  • 按预期设置QT_ANGLE_PLATFORM = d3d9 - >相同的错误对话框.
  • 按预期设置QT_ANGLE_PLATFORM = d3d11 - >相同的错误对话框.
  • 设置QT_OPENGL =桌面 - >与QT_ANGLE_PLATFORM = warp相同.
  • 按预期设置QT_OPENGL = angle - >相同的错误对话框.
  • 设置QT_OPENGL =软件+ opengl32sw.dll(Windows的mesa) - >不可预测:可能运行,可能会崩溃,可能会显示错误对话框.

Qt Quick 2D渲染器的更新

虽然,Mesa似乎是一个部分解决方案,但在Qt 5.4.0中,配置似乎经常崩溃.

另一个后退可能是Qt Quick 2D渲染器,但不幸的是,这也会崩溃.

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

一些用户体验后更新:

角度
  • 在某些系统上有一些渲染错误
  • 在所有系统上都不可靠
与翘曲的角度
  • 不可靠的
桌面OpenGL
  • 默认实现OpenGL 1.1,这太旧了.
  • 即使OpenGL版本没问题,也不可靠.
  • 如果Qt使用,则有渲染错误
QtQuick2dRenderer
  • 有一些重大的渲染问题
  • 崩溃,冻结
  • 适用于没有硬件加速的系统
Mesa OpenGL后端
  • 目前似乎非常可靠
  • 一般来说速度很慢,某些系统速度很慢.
  • 重型部署重量

结论:这些系统仍然没有真正的解决方案

Qt 5.5的更新

Anno 2015:破碎的图形驱动器仍然破碎.

我目前的结论是:

  1. 如果可能,请使用QtQuick2dRenderer.
  2. 否则使用Mesa后端.
  3. 跳过角度,跳过桌面OpenGL,跳过Warp.

Bru*_*run 7

QT 5在某些硬件配置上与opengl存在巨大的兼容性问题Intel HD3000驱动程序和Nvidia/ATI卡的组合在Windows 10上无效 .https://bugreports.qt.io/browse/QTBUG-42240

英特尔不再支持此卡,但其驱动程序存在导致崩溃的错误.

如果您想支持HD3000的客户,您不能依赖硬件opengl.


Ker*_*shi 4

在Windows下,opengl32.dll是默认的OpenGL驱动程序。它实现了 OpenGL 1.1(非常旧的版本)。ANGLE 具有 OpenGL ES 2.0 基线,需要安装 DirectX 9/11 才能将调用映射到其中。

因此,如果您的显卡未安装 OpenGL 驱动程序、OpenGL 驱动程序低于 2.0 和/或未安装 DirectX 9/11,您的应用程序将无法运行。

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

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