Qt中关于opengl的问题

1、检测显卡驱动是否存在,不存在的情况,再去使用Qt::AA_UseSoftwareOpenGL选项

bool _isNotInstalledVideoDriver() {
    QProcess *wmic = new QProcess();
    wmic->setProcessChannelMode(QProcess::MergedChannels);

    QObject::connect(wmic, &QProcess::readyReadStandardOutput, [wmic]() {
        QTextStream stream(wmic->readAllStandardOutput());
        QString s;
        while (stream.readLineInto(&s)) {
            QString line = s.trimmed();
            if (line.isEmpty())
                continue;
            if (line.startsWith("InfFilename", Qt::CaseSensitive)) {
                infName = line.split("=")[1];
            } else if (line.startsWith("Name", Qt::CaseSensitive)) {
                drvName = line.split("=")[1];
            }
        }
    });
    wmic->start("wmic path win32_videoController get InfFilename,name /format:list");
    wmic->waitForFinished();
    return infName.startsWith("display.inf");
}

2、检测opengl版本

    QOpenGLContext ctx;
    ctx.create();
    QSurfaceFormat format = ctx.format();

    auto major = format.majorVersion();
    auto minor = format.minorVersion();
    if (major < 2) {
        QCoreApplication::setAttribute(Qt::AA_UseOpenGLES, false);
        QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL, true);
    }

3、QWebengine显示黑屏的解决

qputenv("QMLSCENE_DEVICE", "softwarecontext");

注意:这些Attribute,要在QGuiApplication 构造之前设置才会生效!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值