[vtkusers] VTK 6.2 and PyQt5?

clinton at elemtech.com clinton at elemtech.com
Fri Feb 5 13:58:29 EST 2016

----- On Feb 5, 2016, at 11:15 AM, Elvis Stansvik <elvis.stansvik at orexplore.com> wrote: 

> 2016-02-05 18:46 GMT+01:00 < clinton at elemtech.com > :

>> ----- On Feb 5, 2016, at 10:26 AM, David Gobbi < david.gobbi at gmail.com > wrote:

>>> On Fri, Feb 5, 2016 at 9:15 AM, Elvis Stansvik < elvis.stansvik at orexplore.com >
>>> wrote:

>>>> Alright, so you've heard about it before? Should there ever be a need for
>>>> QGLWidget, or should it be reported as a bug?

>>>> My system:

>>>> Thinkpad T440s
>>>> Intel HD Graphics 4400
>>>> Qt 5.5.1 / PyQt5 5.4.2 / VTK 6.2.0

>>>> All installed from Kubuntu repos (with backports repositories enabled).

>>>> I have no reason not to use QGLWidget instead of QWidget, so it's not a big
>>>> problem. I was mostly curious if others have seen this problem.

>>> Yes, the depth buffer for the context seems to be missing. The person who
>>> submitted the QGLWidget patch had exactly the same issue:
>>> https://gitlab.kitware.com/vtk/vtk/merge_requests/1097

>>> That was for linux on a virtual machine, so I thought it was the fault of the
>>> virtual machine. But maybe it wasn't after all!

>>> I use linux as well, with NVidia graphics, for me it works without QGLWidget.

>>> - David

>> Perhaps the following explanation will clear some things up, and help people
>> understand when and why the problems shows up.

>> The C++ QVTKWidget class addresses this issue by controlling the X11 visual when
>> creating the window. See QVTKWidget::x11_setup_window().
>> I don't think this issue is related to what OpenGL driver is used, but rather
>> what X11 visual is the default or chosen by Qt.

>> On Linux, you can run
>> $ xdpyinfo | default
>> to get the default visual for the X11 server.
>> In my case, its
>> default visual id: 0x21

>> Then you run glxinfo to look up the capabilities of the default visual.

>> In my case, visual 0x21 has the following capabilities.
>> visual x bf lv rg d st colorbuffer sr ax dp st accumbuffer ms cav
>> id dep cl sp sz l ci b ro r g b a F gb bf th cl r g b a ns b eat
>> ----------------------------------------------------------------------------
>> 0x021 24 tc 0 24 0 r y . 8 8 8 0 . s 4 24 8 16 16 16 16 0 0 None

>> My default visual 0x21 supports a depth buffer, but not alpha. To get alpha
>> working with VTK, a different visual would be needed.

>> When mixing OpenGL and X11, the application code is responsible for choosing the
>> X11 visual that supports the capabilities one wants to get from OpenGL.
>> By using QWidget, you get the default visual, unless overridden. By using
>> QGLWidget, you possibly get another one, depending on the logic in QGLWidget
>> based on QGLFormat. The default QGLFormat may or may not give you what you are
>> expecting to get with VTK. Also, when using QGLWidget, you now have a window
>> with 2 opengl contexts created for it. One by VTK, and another by Qt - and I
>> find that confusing.

>> In Qt 4.8, the QApplication constructor had support for specifying visuals, but
>> that appears to have gone away with Qt 5.

> Thanks for the detailed info Clint, I'm still digesting it.

> On my system I get:

> [estan at pyret ~]$ xdpyinfo | grep default
> default screen number: 0
> default colormap: 0x22
> default number of colormap cells: 256
> default visual id: 0x20
> [estan at pyret ~]$ glxinfo | grep 0x020
> 0x020 24 tc 0 32 0 r y . 8 8 8 8 . . 0 24 8 0 0 0 0 0 0 None

> I'm not sure what these means.

> But in any case, is there really no Qt 5 API which VTK could use to request an
> X11 visual that has the required capabilities?

> Thanks for shedding light on this, I'll go with QGLWidget when working on my
> laptop for now. But yes, I also find the double GL contexts strange.

You can try passing into QApplication the visual you want to use. 
QApplication(['QVTKRenderWindowInteractor', '-visual', '25']) 

Perhaps trying different visuals listed by glxinfo will help in understanding the issue. 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20160205/c9d7435b/attachment.html>

More information about the vtkusers mailing list