Qt获取OpenGL版本

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已弃用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值