Qt5可以使用ANGL来使用OpenGL驱动程序或DirectX驱动程序。由于我们不能依赖已安装的OpenGL驱动程序,因此我们需要使用ANGLE后端。遗憾的是,这并不能解决所有部署问题,特别是在没有硬件加速的Windows虚拟机上。在这些系统上,我们收到一条错误消息,指出创建OpenGL上下文失败。
Screenshot: Failed to create OpenGL context for format QSurfaceFormat
我们正在部署所有必需的库(libEGL.dll libGLESv2.dll libeay32.dll msvcp110.dll msvcr110.dll d3dcompiler_46.dll),但我们仍然收到此错误消息。
如何部署需要在没有OpenGL驱动程序的最终用户计算机上运行的QML应用程序以及没有Direct3D加速的(虚拟)计算机?
Qt wiki mentioning this problem上有一个页面,但这对解决它没有多大帮助。
到目前为止,我的发现是:
尽管Mesa似乎是一个部分解决方案,但在Qt 5.4.0中,配置似乎经常崩溃。
另一个后退可能是Qt Quick 2D渲染器,但不幸的是,这也会崩溃。
结论:这些系统仍然没有真正的解决方案
Anno 2015:破碎的图形驱动器仍然坏了。
我目前的结论是:
答案 0 :(得分:7)
QT 5在某些硬件配置上与opengl存在巨大的兼容性问题 英特尔HD3000驱动程序和Nvidia / ATI卡的组合在Windows 10上无法使用。 https://bugreports.qt.io/browse/QTBUG-42240
英特尔不再支持此卡,但其驱动程序存在导致崩溃的错误。
如果您想支持使用HD3000的客户,则不能依赖硬件opengl。
答案 1 :(得分:4)
在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加速。
答案 2 :(得分:1)
我重新检查了一下,看看这些问题是否已由最新版本的QT 5.12.2修复,但是没有。在引用的QT Wiki条目OP中描述的功能 https://wiki.qt.io/Qt_5_on_Windows_ANGLE_and_OpenGL听起来不错,但实际上却是行不通的。
我得出结论,以任何形式避免在QT上使用OpenGL。太不可靠了。