gpt4 book ai didi

windows - 在Win 7上将Qt与ANGLE一起使用时的空白窗口

转载 作者:行者123 更新时间:2023-12-03 11:09:50 27 4
gpt4 key购买 nike

我有一个Qt Quick 2应用程序(QML),在某些Windows PC上显示空白窗口。有什么想法可以解决吗?

我知道Qt Quick 2使用OpenGL 2.0的需求已在某些Windows PC上引起了这样的问题,尤其是那些装有Intel显卡的PC。我采用的解决方案是在Windows编译时强制使用ANGLE。除几台PC会显示空白窗口(通常为白色),并且如果您转开并切换回该应用程序而无法重绘外,这已经非常成功。

以下是演示该问题的简短测试应用程序。正确运行时,要确认使用角度,它应显示绿色背景和圆形白色鼠标光标的窗口。如果未使用ANGLE,则会显示红色背景和鼠标光标(例如MacOS)。您永远不会出现空白窗口。

一台有问题的PC正在运行Windows 7 32位Home Premium SP1,并装有Intel Graphics Media Accelerator 3600系列(Atom N2800)。

test.pro

TEMPLATE = app
TARGET = Test

QT += qml quick

SOURCES += main.cpp
RESOURCES += qml.qrc

main.cpp
#include <QGuiApplication>
#include <QQmlEngine>
#include <QQuickView>

int main(int argc, char *argv[])
{
#ifdef Q_OS_WIN
QGuiApplication::setAttribute(Qt::AA_UseOpenGLES);
#endif
QGuiApplication app(argc, argv);

QQuickView *view = new QQuickView;
view->connect(view->engine(), SIGNAL(quit()), &app, SLOT(quit()));
view->setSource((QUrl(QStringLiteral("qrc:/qml/main.qml"))));
view->show();

return app.exec();
}

qml.qrc
<RCC>
<qresource prefix="/">
<file>qml/main.qml</file>
</qresource>
</RCC>

qml/main.qml
import QtQuick 2.5

Rectangle {
id: root

width: 600
height: 400
color: (OpenGLInfo.renderableType == OpenGLInfo.Unspecified?
'#333': (OpenGLInfo.renderableType == OpenGLInfo.OpenGL?
'#c00': '#0c0'))

MouseArea {
id: mainMouseArea

anchors.fill: parent
hoverEnabled: true

onPositionChanged: mousePointer.position = Qt.point(mouse.x, mouse.y)
}

Rectangle {
id: mousePointer
property point position: Qt.point(-1000,-1000)

width: 60
height: width
radius: width / 2
x: position.x - width / 2
y: position.y - height / 2
color: "white"
}
}

最佳答案

首先,请确保已安装来自英特尔的最新GPU驱动程序。 GPU很旧,因此可能由于驱动程序错误而无法与ANGLE一起使用。在这种情况下,Qt可以检测到这一点并切换到软件渲染,但前提是您只有才不要强制Qt使用ANGLE。另外,您可以通过设置QT_LOGGING_RULES=qt.qpa.gl=true环境变量来启用Qt平台抽象(qpa)日志记录,该变量将记录有关渲染后端的大量有用信息。

您可以尝试以下几种方法:

  • 确保部署所需的dll文件:libGLESv2.dlld3dcompiler47.dll(可从Windows SDK获得最新版本),libEGL.dllopengl32sw.dll(用于软件渲染)。最简单的方法是使用windeployqt
  • 使用qtdiag二进制文件找出Qt使用哪个渲染后端(当不强制为ANGLE时)。
  • 尝试使用QT_OPENGL(请参见Qt5 Documentation)和QT_ANGLE_PLATFORM环境变量(请参见Qt5 Documentation)。
  • 检查所讨论的GPU是否为blacklisted by Qt。对于ANGLE和/或OpenGL后端,可能会将其列入黑名单。通过使用启用了qpa日志记录的qtdiag,可以获取设备ID和驱动程序版本(请参见上文)。
  • 关于windows - 在Win 7上将Qt与ANGLE一起使用时的空白窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41451089/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com