根据CodeXL,我';m在Qt中禁用角度层时未成功

根据CodeXL,我';m在Qt中禁用角度层时未成功,qt,opengl,codexl,google-angle,Qt,Opengl,Codexl,Google Angle,我已经尽力在我的Qt应用程序中禁用了ANGLE层,但显然没有发生。在CodeXL调试器中运行应用程序时,事件日志包含以下行: 加载的DLL:C:\Windows\SysWOW64\d3d11.DLL 所以它加载的是Direct3D,在Qt中,它只通过角度发生。在CodeXL中点击“Break”按钮也没有任何作用,这对我来说意味着没有真正的OpenGL调用发生,它们只被转换为D3D 事件日志还指出: 调试字符串:加载opengl32.dll失败(找不到指定的模块。) 为什么会发生这种情况,我如何修

我已经尽力在我的Qt应用程序中禁用了ANGLE层,但显然没有发生。在CodeXL调试器中运行应用程序时,事件日志包含以下行:

加载的DLL:C:\Windows\SysWOW64\d3d11.DLL

所以它加载的是Direct3D,在Qt中,它只通过角度发生。在CodeXL中点击“Break”按钮也没有任何作用,这对我来说意味着没有真正的OpenGL调用发生,它们只被转换为D3D

事件日志还指出:

调试字符串:加载opengl32.dll失败(找不到指定的模块。)

为什么会发生这种情况,我如何修复它?

我想禁用ANGLE的原因是,否则我无法使用CodeXL进行调试(它不支持D3D调试)

我的系统:

  • 视窗10
  • 首款GPU:Intel HD Graphics 5500
  • 第二个GPU:AMD Radeon R5 M330(我想这就是我的应用程序使用的GPU)
我的代码:

main.cpp:

Z:/disable_angle.txt:

  • 将QT_LOGGING_RULES环境变量设置为“QT.qpa.gl=true”。因此,您将看到一些额外的调试输出,这将有助于理解Qt选择的确切内容(opengl/angle/software)

  • 尝试将Z:/disable_angle.txt更改为Z:\disable_angle.txt 请注意反斜杠:)它是Windows,因此这可能是罪魁祸首

  • 除了禁用_角度(您的配置对我来说似乎正确),还可以尝试设置disable_d3d11和disable_d3d9

    “禁用角度”、“禁用d3d11”、“禁用d3d9”


  • 如果要完全禁用角度,应设置应用程序属性。如果这还不够,那么针对OpenGL32.lib的链接可能会有所帮助

    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    #include <QQuickFramebufferObject>
    #include <QOpenGLShaderProgram>
    #include <QOpenGLFramebufferObject>
    #include <QQuickWindow>
    
    class MyItem : public QQuickFramebufferObject {
        Q_OBJECT
    
    public:
        Renderer* createRenderer() const;
    };
    
    class MyItemRenderer : public QQuickFramebufferObject::Renderer {
    public:
        void render() {
            update();
        }
    
        QOpenGLFramebufferObject* createFramebufferObject(const QSize &size) {
            QOpenGLFramebufferObjectFormat format;
            format.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
            return new QOpenGLFramebufferObject(size, format);
        }
    };
    
    QQuickFramebufferObject::Renderer* MyItem::createRenderer() const {
        return new MyItemRenderer();
    }
    
    int main(int argc, char **argv) {
        qputenv("QT_OPENGL_BUGLIST", "Z:/disable_angle.txt");
        QGuiApplication::setAttribute(Qt::AA_UseDesktopOpenGL);
    
        QGuiApplication app(argc, argv);
    
        qmlRegisterType<MyItem>("MyItem", 1, 0, "MyItem");
    
        QQmlApplicationEngine engine;
        engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    
        return app.exec();
    }
    
    #include "main.moc"
    
    import QtQuick 2.0
    
    import MyItem 1.0
    import QtQuick.Window 2.2
    
    Window {
        visible: true
        width: 400
        height: 400
    
        MyItem {
            anchors.fill: parent
        }
    }
    
    {
        "entries": [
            {
              "id": 1,
              "description": "Disable angle",
              "os": {
                "type": "win"
              },
              "features": [
                "disable_angle"
              ]
            }
        ]
    }