gpt4 book ai didi

Qt:如何检测正在使用的 OpenGL 版本?

转载 作者:行者123 更新时间:2023-12-04 15:40:54 26 4
gpt4 key购买 nike

Qt 可以通过多种方式使用 OpenGL:桌面( native )、ANGLE、ES……现在有可以在运行时选择的“动态”。在一个应用程序中,有没有一种方法可以检测出哪个正在使用?在 C++ 中还是在 QML 中?

例如相当于global declarations让您检测操作系统

最佳答案

检测 OpenGL 版本

  • 在 QML 中,有 OpenGLInfo
  • 在 C++ 中,有 QOpenGLContext::openGLModuleType()
  • 在 OpenGL C++ 库中,有 glGetString(GL_VERSION)
  • 另见Qt blog article: Which OpenGL implementation is my Qt Quick app using today?

  • 如果您想强制执行特定的 OpenGL 版本
  • 在软件中设置选项(参见下面的代码示例)
  • 对于桌面/ native ,设置环境变量 QT_OPENGLdesktop或将应用程序属性设置为 Qt::AA_UseDesktopOpenGL
  • 对于 ANGLE,设置环境变量 QT_OPENGLangle或将应用程序属性设置为 Qt::AA_UseOpenGLES
  • 对于软件渲染,设置环境变量 QT_OPENGLsoftware或将应用程序属性设置为 Qt::AA_UseSoftwareOpenGL
  • 使用 configure 创建 Qt 的静态构建用于设置所需 OpenGL 实现的选项(但请注意 Qt licensing rules )
  • 对于桌面/ native ,包括 -opengl desktop
  • 角度,不要包括 -opengl选项;那是因为它是默认的
  • 还有-opengl dynamic这让 Qt 可以选择最佳选项。这是在 Qt 5.4 中引入的。如果您想要此选项但出于任何其他原因不需要静态构建,则无需创建静态构建,因为预构建的二进制文件从 Qt 5.5 开始使用此选项。
  • 您还可以在 Qt for Windows - Requirements 上探索其他变体.虽然这是一个特定于 Windows 的页面,但这里包含了有关为 Qt 配置 OpenGL 的大部分信息。 (可能是因为大多数 OpenGL 渲染问题都在 Windows 平台上!)

  • 代码示例
    #include <QGuiApplication>
    //...

    int main(int argc, char *argv[])
    {
    // Set the OpenGL type before instantiating the application
    // In this example, we're forcing use of ANGLE.

    // Do either one of the following (not both). They are equivalent.
    qputenv("QT_OPENGL", "angle");
    QCoreApplication::setAttribute(Qt::AA_UseOpenGLES);

    // Now instantiate the app
    QGuiApplication app(argc, argv);
    //...

    return app.exec();
    }

    (感谢 peppe 上面评论中的初步答案,感谢 user12345 的博客链接)

    关于Qt:如何检测正在使用的 OpenGL 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41021681/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com