Qt5可以使用OpenGL驱动程序或DirectX驱动程序来使用ANGLE。由于我们不能依赖已安装的OpenGL驱动程序,因此需要使用ANGLE后端。不幸的是,这并不能解决所有部署问题,特别是在没有硬件加速的Windows虚拟机上。在这些系统上,我们会收到一个错误消息,说明创建OpenGL上下文失败。
屏幕截图:无法为格式QSurfaceFormat创建OpenGL上下文
我们部署所有必需的库(libEGL.dll libGLESv2.dll libeay32.dll msvcp110.dll msvcr110.dll d3dcompiler_46.dll),但仍然收到此错误消息。
如何部署需要在没有OpenGL驱动程序和(虚拟)没有Direct3D加速的终端用户机器上运行的QML应用程序?
Qt wiki上有一页提到了这个问题,但这对解决问题并不是非常有帮助。
更新Qt 5.4.0:
我目前的发现是:
- 设置QT_ANGLE_PLATFORM=warp->创建没有内容的窗口。
- 设置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 Renderer
尽管Mesa似乎是部分解决方案,在Qt 5.4.0中配置非常容易崩溃。
另一种备用方案可能是Qt Quick 2D渲染器,但不幸的是,这也会导致崩溃。
- 将softwarecontext.dll复制到/scenegraph + 设置QMLSCENE_DEVICE=softwarecontext -> 崩溃
一些用户体验后的更新:
Angle- 在某些系统上存在一些渲染错误
- 在所有系统上都不可靠
- 不可靠
- 默认实现OpenGL 1.1,太老了。
- 即使OpenGL版本正确,仍然不可靠。
- 如果被Qt使用,会出现渲染错误
- 有一些严重的渲染问题
- 会崩溃、冻结
- 适用于没有硬件加速的系统
- 目前似乎相当可靠
- 总体上相当缓慢,在某些系统上非常缓慢。
- 部署较为繁琐
结论:对于这些系统,仍然没有真正的解决方案。
Qt5.5的更新
2015年:破损的图形驱动仍然是破损的。
我目前的结论是:
- 如果可能,请使用QtQuick2dRenderer。
- 否则,请使用Mesa后端。
- 跳过Angle,跳过Desktop OpenGL,跳过Warp。