检查Qt在运行时使用哪个OpenGL引擎进行发布版本

时间:2016-03-31 10:56:34

标签: windows qt opengl qtquick2 qt5.6

在QML应用程序中there are 3 rendering types

  • 原生OpenGL:“桌面”
  • ANGLE Direct3D:“angle”
  • 软件渲染器:“software”

我们使用支持类型的自动加载机制。

如何以编程方式确定在运行时使用哪种渲染类型?

我知道QT_LOGGING_RULES=qt.qpa.gl=true但是这会产生很多噪音和DEBUG消息,这些消息没有记录在我们的发布版本中。还有另一种简单的方法来获取渲染类型吗?

1 个答案:

答案 0 :(得分:4)

感谢@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 *。