Interesting. Well in that case I think I'll need to modify my code to use ANGLE, as you are suggesting. That'll require quite an effort so for the time being I'll stay with QGLWidget.
Thanks a lot for your hints. Calogero Il 4/29/2015 11:31 AM, Agocs Laszlo ha scritto: > Hi Calogero, > > When adding a QOpenGLWidget or QQuickWidget into a widget hierarchy in a > window, the entire window will be rendered differently: it is switched > over to OpenGL-based compositing. This involves using OpenGL features not > present in OpenGL 1.1. > > If you avoid adding (parenting) the QOpenGLWidget into the window, you > will find that it becomes functional with GL 1.1 again. This is because > you then use the traditional path without relying on GL. > > Note also that switching back and forth between the rendering models is > not fully in place: making a QOpenGLWidget invisible or even removing it > may not have any effect on how the window is rendered afterwards. > > Best regards, > Laszlo > > On 29/04/15 10:26, "Calogero Mauceri" <mauc...@actgate.com> wrote: > >> Thanks Laszlo for your explanation. >> >> I still do not understand why the whole application is not properly >> rendered, not only the OpenGL stuff. >> The application we are developing is a quite complex one, having >> multiple windows, and the OpenGL one is a small part of it. >> Simply including just one instance of QOpenGLWidget in the application >> causes the bad rendering, even if that widget is not even shown. >> >> Calogero >> >> Il 4/28/2015 8:54 PM, Agocs Laszlo ha scritto: >>> Because when using remote desktop you are suddenly left with OpenGL 1.1 >>> (ouch) and so QOpenGLWidget and friends that rely on OpenGL 2.0 features >>> (like framebuffer objects) cease to function. >>> >>> The solution is to rely on ANGLE or a software rasterizer (like Mesa >>> llvmpipe) in this case. >>> >>> When using the dynamic OpenGL builds, the fallback to ANGLE will happen >>> automatically when using remote desktop. I assume you are using the >>> -opengl packages from 5.4.1 and that's why this is not in place. With >>> 5.5 >>> this won't be an issue since desktop OpenGL packages will not be >>> provided >>> anymore. >>> >>> Best regards, >>> Laszlo >>> >>> >>> On 27/04/15 17:17, "Calogero Mauceri" <mauc...@actgate.com> wrote: >>> >>>> Hi all, >>>> >>>> switching my application from using QGLWidget to the new QOpenGLWidget >>>> I >>>> noticed a very weird problem when using the application through Remote >>>> Desktop on Windows. The whole application is fully black, it is not >>>> properly rendered, not only the QOpenGLWidget, but also the other >>>> widgets in the application. >>>> >>>> I created a very simple example demonstrating my issue. >>>> >>>> MyWidget::MyWidget(QWidget* parent, Qt::WindowFlags fl) >>>> : QWidget(parent, fl) >>>> { >>>> QVBoxLayout *vBoxLayout = new QVBoxLayout(this); >>>> QHBoxLayout *hLayout = new QHBoxLayout; >>>> >>>> QLabel *myLabel = new QLabel("Test", this); >>>> QPushButton *myButton = new QPushButton("Test", this); >>>> hLayout->addWidget(myLabel); >>>> hLayout->addWidget(myButton); >>>> >>>> QGLWidget *myOPenGLWidget = new QGLWidget(this); >>>> // QOpenGLWidget *myOPenGLWidget = new QOpenGLWidget(this);// this >>>> causes bad app rendering on Remote Desktop >>>> >>>> vBoxLayout->addItem(hLayout); >>>> vBoxLayout->addWidget(myOPenGLWidget); >>>> } >>>> >>>> When I use QGLWidget the widgets are properly rendered, as you can see >>>> in the attached image. When I replace the QGLWidget with its counter >>>> part QOpenGLWidget then the whole app is fully black when launched >>>> through remote desktop (on Windows), no widget is rendered (see other >>>> image attached). If I run the application on my local machine, then >>>> everything is properly rendered. >>>> >>>> Am I doing something wrong? Or is this a limit/bug in Qt (I'm using >>>> latest Qt version, 5.4.1)? >>>> >>>> This is my main >>>> >>>> int main( int argc, char *argv[] ) >>>> { >>>> QApplication appMain(argc, argv); >>>> >>>> MyWidget *mainWin = new MyWidget; >>>> mainWin->show(); >>>> >>>> return appMain.exec(); >>>> } >>>> >>>> I enabled qt.qpa.gl debugging and this is the output of the application >>>> in the two cases. >>>> >>>> Output in case of QGLWidget enabled: >>>> [...] >>>> qt.qpa.gl: QWindowsIntegration::createPlatformOpenGLContext >>>> QSurfaceFormat(version 2.0, options QFlags(), depthBufferSize 1, >>>> redBufferSize -1, greenBufferSize -1, blueBufferSize -1, >>>> alphaBufferSize >>>> -1, stencilBufferSize 1, samples -1, swapBehavior 2, swapInterval -1, >>>> profile 0) >>>> qt.qpa.gl: Qt: Using WGL and OpenGL from "opengl32.dll" >>>> qt.qpa.gl: QOpenGLStaticContext::create OpenGL: "Microsoft >>>> Corporation","GDI Generic" default ContextFormat: v1.1 profile: 0 >>>> options: QFlags(0x4) >>>> Extensions: 3 >>>> qt.qpa.gl: QWindowsGLContext::QWindowsGLContext 0x6be850 GDI >>>> requested: QSurfaceFormat(version 2.0, options QFlags(), >>>> depthBufferSize 1, redBufferSize -1, greenBufferSize -1, blueBufferSize >>>> -1, alphaBufferSize -1, stencilBufferSize 1, samples -1, swapBehavior >>>> 2, >>>> swapInterval -1, profile 0) >>>> obtained # 8 GDI QSurfaceFormat(version 1.1, options QFlags(0x4), >>>> depthBufferSize 16, redBufferSize 8, greenBufferSize 8, blueBufferSize >>>> 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior 2, >>>> swapInterval 1, profile 0) >>>> PIXELFORMATDESCRIPTOR dwFlags=0x465 PFD_DRAW_TO_WINDOW >>>> PFD_SUPPORT_OPENGL PFD_GENERIC_FORMAT PFD_DOUBLEBUFFER iPixelType=0 >>>> cColorBits=32 cRedBits=8 cRedShift=16 cGreenBits=8 cGreenShift=8 >>>> cBlueBits=8 cBlueShift=0 cDepthBits=16 cStencilBits=8 iLayerType=0 >>>> cAlphaBits=8 cAlphaShift=0 cAccumBits=64 cAccumRedBits=16 >>>> cAccumGreenBits=16 cAccumBlueBits=16 cAccumAlphaBits=16 swap interval: >>>> -1 >>>> default: ContextFormat: v1.1 profile: 0 options: QFlags(0x4) >>>> HGLRC=0x20000 >>>> [...] >>>> >>>> Output in case of QOpenGLWidget enabled: >>>> [...] >>>> qt.qpa.gl: QWindowsIntegration::createPlatformOpenGLContext >>>> QSurfaceFormat(version 2.0, options QFlags(), depthBufferSize -1, >>>> redBufferSize -1, greenBufferSize -1, blueBufferSize -1, >>>> alphaBufferSize >>>> -1, stencilBufferSize -1, samples -1, swapBehavior 0, swapInterval 1, >>>> profile 0) >>>> qt.qpa.gl: Qt: Using WGL and OpenGL from "opengl32.dll" >>>> qt.qpa.gl: QOpenGLStaticContext::create OpenGL: "Microsoft >>>> Corporation","GDI Generic" default ContextFormat: v1.1 profile: 0 >>>> options: QFlags(0x4) >>>> Extensions: 3 >>>> qt.qpa.gl: QWindowsGLContext::QWindowsGLContext 0x4c0e68 GDI >>>> requested: QSurfaceFormat(version 2.0, options QFlags(), >>>> depthBufferSize -1, redBufferSize -1, greenBufferSize -1, >>>> blueBufferSize >>>> -1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior >>>> 0, swapInterval 1, profile 0) >>>> obtained # 7 GDI QSurfaceFormat(version 1.1, options QFlags(0x4), >>>> depthBufferSize 32, redBufferSize 8, greenBufferSize 8, blueBufferSize >>>> 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior 2, >>>> swapInterval 1, profile 0) >>>> PIXELFORMATDESCRIPTOR dwFlags=0x465 PFD_DRAW_TO_WINDOW >>>> PFD_SUPPORT_OPENGL PFD_GENERIC_FORMAT PFD_DOUBLEBUFFER iPixelType=0 >>>> cColorBits=32 cRedBits=8 cRedShift=16 cGreenBits=8 cGreenShift=8 >>>> cBlueBits=8 cBlueShift=0 cDepthBits=32 cStencilBits=8 iLayerType=0 >>>> cAlphaBits=8 cAlphaShift=0 cAccumBits=64 cAccumRedBits=16 >>>> cAccumGreenBits=16 cAccumBlueBits=16 cAccumAlphaBits=16 swap interval: >>>> -1 >>>> default: ContextFormat: v1.1 profile: 0 options: QFlags(0x4) >>>> HGLRC=0x20000 >>>> QOpenGLShaderProgram: could not create shader program >>>> QOpenGLShader: could not create shader >>>> bool __thiscall QOpenGLTextureBlitter::create(void) Could not link >>>> shader program: >>>> "" >>>> QOpenGLBuffer::bind(): buffer not created >>>> QOpenGLBuffer::release(): buffer not created >>>> QOpenGLBuffer::bind(): buffer not created >>>> QOpenGLBuffer::release(): buffer not created >>>> [...] >>>> >>>> Thanks in advance for your help! >>>> Calogero >>>> >>>> -- >>>> Calogero Mauceri >>>> Software Engineer >>>> >>>> Applied Coherent Technology Corporation (ACT) >>>> www.actgate.com >>>> >> -- >> Calogero Mauceri >> Software Engineer >> >> Applied Coherent Technology Corporation (ACT) >> www.actgate.com >> >> >> _______________________________________________ >> Interest mailing list >> Interest@qt-project.org >> http://lists.qt-project.org/mailman/listinfo/interest -- Calogero Mauceri Software Engineer Applied Coherent Technology Corporation (ACT) www.actgate.com _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest