检查 Qt 在运行时使用哪个 OpenGL 引擎进行发布构建
Check which OpenGL engine is used by Qt at runtime for release builds
在 QML 应用程序中 there are 3 rendering types:
- 原生 OpenGL:"desktop"
- 角度 Direct3D:"angle"
- 软件渲染器:"software"
我们使用支持类型的自动加载机制。
如何以编程方式确定运行时使用的渲染类型?
我知道 QT_LOGGING_RULES=qt.qpa.gl=true 但这会产生很多噪音和 DEBUG 消息,这些消息不会记录在我们的发布版本中。是否有另一种简单的方法来获取渲染类型?
感谢@peppe 和一些额外的研究:
// this connection must be established before show() is called
QObject::connect(window, &QQuickWindow::sceneGraphInitialized,
[=] () -> void {
auto context = window->openglContext();
auto functions = context->functions();
const std::string vendor = reinterpret_cast<const char*>(functions->glGetString(GL_VENDOR));
const std::string renderer = reinterpret_cast<const char*>(functions->glGetString(GL_RENDERER));
const std::string version = reinterpret_cast<const char*>(functions->glGetString(GL_VERSION));
qDebug() << "OpenGL vendor: " << vendor << " "
<< "renderer: " << renderer << " "
<< "version: " << version;
});
其中 window
是我的主要 QQuickWindow*。
在 QML 应用程序中 there are 3 rendering types:
- 原生 OpenGL:"desktop"
- 角度 Direct3D:"angle"
- 软件渲染器:"software"
我们使用支持类型的自动加载机制。
如何以编程方式确定运行时使用的渲染类型?
我知道 QT_LOGGING_RULES=qt.qpa.gl=true 但这会产生很多噪音和 DEBUG 消息,这些消息不会记录在我们的发布版本中。是否有另一种简单的方法来获取渲染类型?
感谢@peppe 和一些额外的研究:
// this connection must be established before show() is called
QObject::connect(window, &QQuickWindow::sceneGraphInitialized,
[=] () -> void {
auto context = window->openglContext();
auto functions = context->functions();
const std::string vendor = reinterpret_cast<const char*>(functions->glGetString(GL_VENDOR));
const std::string renderer = reinterpret_cast<const char*>(functions->glGetString(GL_RENDERER));
const std::string version = reinterpret_cast<const char*>(functions->glGetString(GL_VERSION));
qDebug() << "OpenGL vendor: " << vendor << " "
<< "renderer: " << renderer << " "
<< "version: " << version;
});
其中 window
是我的主要 QQuickWindow*。