当Qt使用系统OpenGL功能时,这是一个古老的错误,可能会在某些硬件上重现“ [QTBUG-31983] Windows XP上的字体渲染显示带有QML Text元素的工件”
在Qt 5.5版之前,Windows有两种Qt版本:ANGLE和OpenGL。可以通过安装程序文件名中的后缀“ opengl”来区分它们,例如:
qt-opensource-windows-x86-msvc2013_opengl-5.4.1.exe
qt-opensource-windows-x86-msvc2013-5.4.1.exe
Run Code Online (Sandbox Code Playgroud)
有关说明,请参见“ Windows ANGLE和OpenGL上的Qt 5”。
ANGLE构建没有这种缺陷。仅OpenGL构建会受到影响。在许多Windows安装上,默认情况下都很少支持OpenGL。在某些情况下,它可能会在QML窗口初始化期间崩溃。需要手动安装视频驱动程序。但是,对于某些旧硬件,要找到具有足够支持OpenGL的良好视频卡驱动程序是一个问题。
可能的解决方案:
Text使用默认渲染类型将标准QML 控件子类化Text.NativeRendering:Run Code Online (Sandbox Code Playgroud)Text { renderType: Text.NativeRendering; }
如果不支持Windows XP,则ANGLE Qt构建可能是一个很好的解决方案。
如果不需要大量图形使用,则更好的解决方案是使用软件OpenGL渲染。在Qt 5.4之前,可以使用MSYS Mesa库opengl32.dll(仅应使用某些特定版本)。如果将此类库放在使用OpenGL Qt版本构建的Qt应用程序的可执行文件夹中,该库将自动用于软件渲染,而不是默认硬件渲染。从Qt 5.4开始,此类库由Qt提供:opengl32sw.dll(http://doc.qt.io/qt-5/windows-requirements.html)。
OpenGL仿真软件可在所有类型的硬件上完美运行,并且不需要任何特殊的视频卡驱动程序。
从Qt 5.4开始,有application属性Qt::AA_UseSoftwareOpenGL:
在使用动态加载OpenGL实现的平台上强制使用基于软件的OpenGL实现。这通常是Mesa llvmpipe的修补版本,提供OpenGL 2.1。如果没有可用的OpenGL实现,则该值可能无效。此库的默认名称是
opengl32sw.dll并且可以通过设置环境变量来覆盖QT_OPENGL_DLL。有关更多信息,请参见特定于平台的页面,例如Windows的Qt。此值已在Qt 5.4中添加。
| 归档时间: |
|
| 查看次数: |
2070 次 |
| 最近记录: |