我正在开发一个应用程序,该应用程序可以用相当多的点(~2^16 点)来绘制一些数据。如果不使用 OpenGL,这会非常延迟,但使用 OpenGL 时运行起来非常流畅。 我正在使用 PySide6 (Python 3.9.1) 和 QML 6.7。
问题是它在我的系统上运行良好,但是当同事克隆我的存储库时,他看不到
LineSeries
。应用程序没有抛出任何错误,并且打印该系列的 count
属性显示数据在那里。但是,当 OpenGL 在 LineSeries
上关闭时,它是可见的(但有延迟)。
我在两台机器上运行了 DirectX Diagnostics,他的图形驱动程序已有两年历史(为简洁起见,我将仅附加图形数据来连接两个输出),所以我认为可能就是这样。
此应用程序最终将分发到多台计算机,我希望它能够开箱即用,而无需更新这些计算机上的图形驱动程序。
有没有办法指定Qt/QML使用的OpenGL版本?我想如果我可以使用稍微旧版本的 OpenGL,它更有可能受到旧驱动程序的支持。
要强制 Qt6 使用 OpenGL,您需要设置 https://doc.qt.io/qt-6/qquickwindow.html#setGraphicsApi 和
QSGRendererInterface::OpenGL
要指定使用哪个 OpenGL 版本(并选择核心/兼容性配置文件 MSAA 等),您需要设置默认值 QSurfaceFormat
https://doc.qt.io/qt-6/qsurfaceformat.html#setDefaultFormat OpenGL通过设置主要版本和次要版本来选择版本。
这两个静态函数都必须在 QApplication 构造函数之前调用才能生效。