Hi all,
The advice in the thread “the New QVTKOpenGLWidget” on the development mailing list read:
**1. Why is there a new widget and what does it do ?**
We have been having some issues reported for the old widget, and the old widget could not support quad buffer stereo rendering by design.
Has it is a needed feature in ParaView, a reimplementation was necessary. This new widget fix most of the reported issues with the old widget as well as adding stereo support.
**2. Why keeping the old widget around then ?**
Due to Qt limitations, this new implementation does not support very well being a native widget.
But native widget are sometimes mandatory, for example within QScrollArea and QMDIArea, so the QVTKOpenGLSimpleWidget should be used when in needs of VTK rendering in the contact of Qt native widget.
Also it allows users to switch back to the old widget if necessary.
**3. I'm not sure what native widgets are, what should I do in my application ?**
Here are the different situation :
1. Your Qt application only uses a central QVTKOpenGLWidget for rendering:
-> Nothing to do, just build with last master and make sure all is working well
2. Your Qt application only uses QVTKOpenGLWidget within QScrollArea or QMDIArea, or manually set widgets to be native and you are not interested by stereo rendering.
-> Change all your QVTKOpenGLWidget to QVTKOpenGLSimpleWidget and you are good to go
3. Your application uses a non-native QVTKOpenGLWidget for rendering as well as native QVTKOpenGLWidget for rendering (eg: ParaView, with the central rendering widget and the color map editor rendering widget in scroll areas) :
-> Use QVTKOpenGLWidget for non-native widgets and QVTKOpenGLSimpleWidget for native ones. The later will never support stereo.
**4. I followed your recommendation but I see some strange stuff/bugs/rendering issues**
Even if this new class has been tested extensively and will be used in the next ParaView release, It may still contains some issues. Feel free to discuss them in this mailing list or on our [gitlab](https://gitlab.kitware.com/vtk/vtk).
In our application we use a VTK widget in three places, only two of those required the “old” native widget (because they were nested in a QScrollArea). The other two places we ported to the new widget.
But we ran into problems, first on Windows (see Problem in VTK 8.2 with defaultFormat() and QVTKOpenGLWidget on Windows 10/Intel), which we were able to solve using a workaround, but then also on macOS, which I’ve so far not been able to work around.
The remaining problem we have on macOS is that the initial render sometimes work and sometimes does not. When it doesn’t, the widget is also not responding to input (camera movement). Only by resizing the window (and thus the widget), or by obscuring then revealing the window am I able to get it into a state where it renders properly.
Since I’ve now heard from Paraview devs that it uses the native widget exclusively on macOS, I’m considering going with this as a workaround for now. But this leads me to my question:
**1. Why is there a new widget and what does it do ?**
We have been having some issues reported for the old widget, and the old widget could not support quad buffer stereo rendering by design.
Has it is a needed feature in ParaView, a reimplementation was necessary. This new widget fix most of the reported issues with the old widget as well as adding stereo support.
What are the issues referred to above? And since the old widget is kept (to allow for native contexts), will those issues in it be fixed? (or perhaps they are already?). Unlike ParaView, we do not need support for stereo rendering.
So my question is if there are any downsides with sticking to the native widget in all contexts? We do not seem to suffer from the issues mentioned above (but I’d like to know what they are, to be sure).
Thanks in advance!