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);
}注意:这些Attribute,要在QGuiApplication 构造之前设置才会生效!!!
版权声明:本文为mvmmvm原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。