Qt可以通过多种方式使用OpenGL:桌面(原生),ANGLE,ES ......现在还有动态的'可以在运行时选择。在应用程序中,有没有办法可以检测到哪一个正在使用?在C ++中还是在QML中?
e.g。等同于global declarations的东西,让你检测操作系统
答案 0 :(得分:2)
检测OpenGL版本
OpenGLInfo
QOpenGLContext::openGLModuleType()
glGetString(GL_VERSION)
如果要强制执行特定的OpenGL版本
QT_OPENGL
设置为desktop
或将应用程序属性设置为Qt::AA_UseDesktopOpenGL
QT_OPENGL
设置为angle
或将应用程序属性设置为Qt::AA_UseOpenGLES
QT_OPENGL
设置为software
或将应用程序属性设置为Qt::AA_UseSoftwareOpenGL
configure
选项创建Qt的静态构建来设置所需的OpenGL实现(但要注意Qt licensing rules)
-opengl desktop
-opengl
选项;那是因为它是默认的-opengl dynamic
让Qt选择最佳选项。这是在Qt 5.4中引入的。如果你想要这个选项但是由于任何其他原因不需要静态构建,则不需要创建静态构建,因为预编译的二进制文件从Qt 5.5开始使用此选项。#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 获取上述评论中的初步答案,感谢用户12345获取博客链接)