2016-04-29 1 views
0

nous utilisons la version QT 5.6 Nous avons une application C++ sur Qt Widgets. Dans certains plug-in (créé avec Q_PLUGIN_METADATA et Q_INTERFACES) de cette application, nous utilisons QML: dans certains Widget nous créons QQuickWidgetRectangle noir à la place QQuickWidget (usecase spécifique). Problèmes OpenGL

QQuickWidget* quickWidget = new QQuickWidget(this); 

faire quelques opérations avec le contexte

QQmlContext* ctxt = quickWidget->rootContext(); 

et la source mis

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

Parfois, nous avons des problèmes avec ce widget d'affichage - rectangle noir apparaît.

Nous avons ajouté libEGL.dll, libGLESv2.dll, d3dcompiler_47.dll et opengl32sw.dll.

Nous essayons également de définir l'indicateur Qt :: AA_UseSoftwareOpenGL pour la QApplication principale (avant la construction de QApplication) mais cette opération ne donne pas de résultats.

La reproduction stable que nous avons sur une machine virtuelle avec Win7.

QQuickWidget sur Virtual Mashine semble bon après l'ajout de la carte vidéo 3D RemoteFX. Mais pouvons-nous montrer QQuickWidget avec l'adaptateur vidéo 3D RemoteFX?

enter image description here

après la création QQuickWidget nous avons WinDBG

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 

Où problème?

+2

Votre question est très large. Il n'y a pas [mcve] (http://stackoverflow.com/help/mcve) – ckruczek

+0

Peut-être similaire: https://bugreports.qt.io/browse/QTBUG-47435 – Velkan

Répondre

0

I a le même problème avec QQuickWidget lorsque:

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

Tout était OK quand je compilez avec QtCreator, mais quand je lance exécutable dans d'un autre PC (avec Intel videocards), sur certains les accidents d'applications, mais sur un autre était un "écran noir".

C'est à cause de, par exemple, le deuxième PC a une carte graphique Intel 945. Le problème était en OpenGL.

Qt Quick nécessite OpenGL 2.0 ou supérieur. Cependant, l'Intel 945 ne supporte que jusqu'à OpenGL 1.4

Alors ... je commencer à utiliser QQuickView au lieu de QQuickWidget

+0

Il ne fonctionne probablement pas sur un Commodore C64 non plus ... – Algoman

+1

Btw. Intel 945 est sur la liste noire des GPU chromes - voir la ligne 36 dans https://cs.chromium.org/chromium/src/gpu/config/software_rendering_list.js Pour moi, c'est une forte indication que le problème est le GPU (en dehors de la fait que le GPU a 12 ans ...) – Algoman