C++:
第一种方式:
#include "mainwindow.h"
#include <QApplication>
#include <QOffscreenSurface>
#include <QOpenGLContext>
#include <QOpenGLFunctions>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QOffscreenSurface surf;
surf.create();
QOpenGLContext ctx;
ctx.create();
ctx.makeCurrent(&surf);
GLint major, minor;
ctx.functions()->glGetIntegerv(GL_MAJOR_VERSION, &major); //gl大版本(整型)
ctx.functions()->glGetIntegerv(GL_MINOR_VERSION, &minor); //gl小版本(整型)
qDebug() << "OpenGL Version Info:" << (const char *)ctx.functions()->glGetString(GL_VERSION);
qDebug() << "OpenGL Version Major:" << major << "OpenGL Version Minor:" << minor;
ctx.doneCurrent();
return a.exec();
}
通过Qt离屏渲染的方式,采用OpenGL的API进行获取glGetString(GL_VERSION),离屏渲染的方式可以放在线程中
采用API的方式获取还可以通过链接系统中的OpenGL的库进行运行,这种方式网上有很多。因为OpenGL API的函数地址是不知道的,像上面Qt那种方式在启用渲染时就能确定API的地址,这样就能够使用,还有可以链接系统库,库中API的地址也是能取到的
运行结果:
OpenGL Version Info: 4.6.0 - Build 27.20.100.9664
OpenGL Version Major: 4 OpenGL Version Minor: 6
第二种:
QOpenGLContext ctx;
ctx.create();
QSurfaceFormat format = ctx.format();
auto major = format.majorVersion();
auto minor = format.minorVersion();
qDebug() << "OpenGL Version Major:" << major << "OpenGL Version Minor:" << minor;
这种方式使通过QSurfaceFormat获取
运行结果:
OpenGL Version Major: 4 OpenGL Version Minor: 6
QML:
import QtQuick 2.15
import QtQuick.Window 2.15
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
Text {
id: name
text: "major:" + GraphicsInfo.majorVersion + " minor:" + GraphicsInfo.minorVersion
}
}
使用 GraphicsInfo进行获取,老的方式OpenGLInfo已弃用