2016-04-29 6 views
0

wir verwenden QT Version 5.6 Wir haben C++ Anwendung auf Qt Widgets. In einigen Plugin (mit Q_PLUGIN_METADATA und Q_INTERFACES erstellt) dieser Anwendung verwenden wir QML: in einigen Widget erstellen wir QQuickWidgetSchwarzes Rechteck anstelle von QQuickWidget (spezifischer Anwendungsfall). OpenGL Probleme

QQuickWidget* quickWidget = new QQuickWidget(this); 

einige Operationen mit Kontext

QQmlContext* ctxt = quickWidget->rootContext(); 

und setzen Quelle machen

quickWidget->setSource(QUrl(QStringLiteral("qrc:/Resources/WebResources/main.qml"))); 

Manchmal haben wir Probleme mit diesem Widget angezeigt - schwarzes Rechteck erscheint.

Wir haben libEGL.dll, libGLESv2.dll, d3dcompiler_47.dll und opengl32sw.dll hinzugefügt.

Auch wir versuchen, Qt :: AA_UseSoftwareOpenGL Flag für Haupt QApplication (vor QApplication Konstruktion) zu setzen, aber diese Operation gibt keine Ergebnisse.

Stabile Wiedergabe haben wir auf virtueller Maschine mit Win7.

QQuickWidget on Virtual mashine scheint nach dem Hinzufügen des RemoteFX 3D-Videoadapters gut zu sein. Aber können wir QQuickWidget ohne RemoteFX 3D-Videoadapter zeigen?

enter image description here

nach QQuickWidget schaffen wir

ModLoad: 6ee10000 6ee18000 C:\Users\admin\Desktop\Release\Win32\QtQuick.2\qtquick2plugin.dll 
ModLoad: 66c50000 66cfd000 C:\Users\admin\Desktop\Release\Win32\QtQuick\Controls\qtquickcontrolsplugin.dll 
ModLoad: 6ee00000 6ee08000 C:\Users\admin\Desktop\Release\Win32\QtQuick\Window.2\windowplugin.dll 
ModLoad: 656a0000 65863000 C:\Windows\system32\d3d9.dll 
ModLoad: 749b0000 749b9000 C:\Windows\system32\VERSION.dll 
ModLoad: 6edf0000 6edf6000 C:\Windows\system32\d3d8thk.dll 
ModLoad: 662f0000 663b8000 C:\Windows\system32\opengl32.dll 
ModLoad: 6dc80000 6dca2000 C:\Windows\system32\GLU32.dll 
ModLoad: 655b0000 65697000 C:\Windows\system32\DDRAW.dll 
ModLoad: 6edd0000 6edd6000 C:\Windows\system32\DCIMAN32.dll 
ModLoad: 6d7f0000 6d7f7000 C:\Users\admin\Desktop\Release\Win32\libEGL.DLL 
ModLoad: 65420000 655ac000 C:\Users\admin\Desktop\Release\Win32\libGLESv2.dll 
ModLoad: 650c0000 65416000 C:\Users\admin\Desktop\Release\Win32\d3dcompiler_47.dll 
ModLoad: 74550000 745d3000 C:\Windows\system32\dxgi.dll 
ModLoad: 66bc0000 66c43000 C:\Windows\system32\d3d11.dll 
ModLoad: 75730000 7575d000 C:\Windows\system32\WINTRUST.dll 
ModLoad: 64d60000 650b6000 C:\Users\admin\Desktop\Release\Win32\d3dcompiler_47.dll 
ModLoad: 74550000 745d3000 C:\Windows\system32\dxgi.dll 
ModLoad: 66260000 662e3000 C:\Windows\system32\d3d11.dll 
ModLoad: 650c0000 65416000 C:\Users\admin\Desktop\Release\Win32\d3dcompiler_47.dll 
QWindowsEGLStaticContext::create: Could not initialize EGL display: error 0x3001 
QWindowsEGLStaticContext::create: When using ANGLE, check if d3dcompiler_4x.dll is available 
ModLoad: 64530000 65411000 C:\Users\admin\Desktop\Release\Win32\opengl32sw.dll 
ModLoad: 75a80000 75aaa000 C:\Windows\system32\imagehlp.dll 
ModLoad: 6da80000 6db6b000 C:\Windows\system32\dbghelp.dll 

Wo Problem ist in WinDBG haben?

+2

Ihre Frage ist sehr breit. Es gibt keine [mcve] (http://stackoverflow.com/help/mcve) – ckruczek

+0

Vielleicht ähnlich: https://bugreports.qt.io/browse/QTBUG-47435 – Velkan

Antwort

0

I hat das gleiche Problem mit QQuickWidget wenn:

QQuickWidget * w = new QQuickWidget(this); 
w->setSource(QUrl("qrc:///main.qml")); 
w->show(); 

Alles in Ordnung war, als ich mit QtCreator kompilieren, aber wenn ich laufe ausführbare in einen anderen PC (mit Intel Grafikkarten), auf einigen der App abstürzt, aber auf einigen anderen war ein "schwarzer Bildschirm".

Es war wegen zum Beispiel, der zweite PC hat eine Grafikkarte Intel 945. Das Problem war in OpenGL.

Qt Quick erfordert OpenGL 2.0 oder höher. Allerdings unterstützt das Intel 945 nur auf OpenGL +1,4

Also ... ich mit QQuickView statt QQuickWidget starte

+0

Es funktioniert wahrscheinlich auch nicht auf einem Commodore C64 ... – Algoman

+1

BTW. Intel 945 ist auf der Chrome-GPU-Blacklist - siehe Zeile 36 in https://cs.chromium.org/chromium/src/gpu/config/software_rendering_list.js Das ist für mich ein starkes Indiz, dass das Problem die GPU ist (neben der Tatsache, dass die GPU 12 Jahre alt ist ...) – Algoman

Verwandte Themen