Strange Behaviour with a Multi-Monitor-Set and OpenGL
-
Hi and welcome to devnet,
Which version of Qt are you currently using ?
-
Hi there and thx for the welcome,
it's my first project with Qt and i'am using:
Qt Creator 4.0.2
Based on Qt 5.7.0 (MSVC 2013, 32 bit)
Built on Jun 13 2016 01:04:04
From revision 47b4f2c738Build&Run settings:
Desktop Qt 5.7.0 MSVC2015_64bit -
Can you check against the current 5.6 version ?
-
I was able to check the .exe file on a Laptop of a friend of mine and it worked.
Same File on my Laptop does not.
So it seems to be a problem with my hardware, maybe the internal Graphic driver isn't working, because the Nvidia graphic cards starts with external monitors.But thx for your input and support.
-
IIRC nVidia drivers on Windows have had some troubles lately so it could be related.
-
but it works with the nvidia graphic card. If i start the .exe or Qt with forced use of the nvidia graphic card, it looks ok. Only when i start it with the intel hd graphics 3000 it refuse to work. Is there a know problem with intel hd 3000?
-
Haaaaaa sorry. HD3000 ? Isn't that a pretty old card ?
-
Relatively ;) i've got a Dell XPS 15 L502x with i7 and nvidia GT 540m... from 2011... is 5 years that much old?
Well i am about to buy a new little 13" Laptop. The Dell isn't soooo mobile. I hope the programm will work with the new Laptop integrated intel HD....
For now i can live with the workaround to activate the nvidia when starting Qt...
should i mark this as solved or delete the topic? -
This post is deleted!
-
5 years is already pretty old on the computer market.
Don't delete it, somebody else might also get hit by this problem.
Did you check if there was any update for the Intel graphic card ?
-
Intel HD 3000 should support something like OpenGL 3.1. First check if you have at least version 2.1 support present in your system. You can use something like GL View or
glewinfo
from GLEW package.
If not then make sure you have the latest drivers for your graphics chip.
Also check what context version and profile you're requesting in your app and check the version you're given. -
The HD 3000 supports OpenGL up to 3.1 and I reinstalled the newest drivers: Intel Build 9.17.10.4229
I checked for the context Version with Intel HD:
Context valid: true
Really used OpenGl: 2 . 0
OpenGl information: VENDOR: Google Inc.
RENDERDER: ANGLE (Intel(R) HD Graphics 3000 Direct3D11 vs_4_1 ps_4_1)
VERSION: OpenGL ES 2.0 (ANGLE 2.1.0.8613f4946861)
GLSL VERSION: OpenGL ES GLSL ES 1.00 (ANGLE 2.1.0.8613f4946861)and on Nvidia:
Context valid: true
Really used OpenGl: 4 . 5
OpenGl information: VENDOR: NVIDIA Corporation
RENDERDER: GeForce GT 540M/PCIe/SSE2
VERSION: 4.5.0 NVIDIA 368.81
GLSL VERSION: 4.50 NVIDIASo my Intel HD uses only 2.0, after some reading i added this to my main.cpp:
QSurfaceFormat format;
format.setVersion(3, 1);
format.setProfile(QSurfaceFormat::CoreProfile);
format.setDepthBufferSize(24);
format.setStencilBufferSize(8);
QSurfaceFormat::setDefaultFormat(format)and get this verion out:
****Context valid: true
Really used OpenGl: 3 . 0
OpenGl information: VENDOR: Google Inc.
RENDERDER: ANGLE (Intel(R) HD Graphics 3000 Direct3D11 vs_4_1 ps_4_1)
VERSION: OpenGL ES 3.0 (ANGLE 2.1.0.8613f4946861)
GLSL VERSION: OpenGL ES GLSL ES 3.00 (ANGLE 2.1.0.8613f4946861) ****But its still not working :(
Here is maybe an explanation? The pre-compiled Windows desktop version of Qt5 is built against ANGLE which only provides OpenGL ES 2 support by implementing it on top of DirectX 9.So because of Qt my intel HD uses ANGLE renderer and my tool isn't working maybe because of ANGLE? Is this the Problem?
How can I check what context version and profile my OpenGL-Widget is requesting?
Update:
I tried to force Qt to use the native-OpenGL Modus for the Intel HD by adding this to the main: Qt::AA_UseDesktopOpenGL;but it still uses ANGLE...
-
Solved:
So i added this to the main.cpp:
QCoreApplication::setAttribute(Qt::AA_UseDesktopOpenGL);
instead of:
Qt::AA_UseDesktopOpenGL;and now i get rid of the ANGLE driver:
Context valid: true
Really used OpenGl: 3 . 1
OpenGl information: VENDOR: Intel
RENDERDER: Intel(R) HD Graphics 3000
VERSION: 3.1.0 - Build 9.17.10.4229
GLSL VERSION: 1.40 - Intel Build 9.17.10.4229And now it's working, big thx for your help and for the context version suggestion, that was the key...
-
Great that you found the flag. Since version 5.5 Qt on Windows does that dynamic choosing of the OpenGL driver. Since you always want the desktop version you can also build Qt yourself with a configure option
-opengl desktop
. This would disable ANGLE support entirely so that you wouldn't need the flag and also shrink the library a bit and reduce the number of dependencies for deployment.