Volume rendering broken with QVTKOpenGLWidget on Windows / HD4000 and HD4600
Test case:
Build with
mkdir build && cd build && cmake .. && cmake --build .
Run with
TestCase 1
to use the new QVTKOpenGLWidget
, or with just
TestCase
to use a plain vtkRenderWindow
/ vtkRenderWindowInteractor
.
With QVTKOpenGLWidget
, the volume is not showing up on (at least)
- Windows 7 / HD 4600, or
- Windows 8.1 / HD 4000
On the Windows 7 machine, various Intel driver versions were tried, including the latest available.
It has been reported to work with Windows 10 / HD 530 (see the ML). It also works on my Linux / HD 4400.
Ken's theory on the mailing list was that this may be https://bugreports.qt.io/browse/QTBUG-60742. But I tried patching Qt 5.6 branch with
diff --git a/src/plugins/platforms/windows/qwindowsglcontext.cpp b/src/plugins/platforms/windows/qwindowsglcontext.cpp
index 2eaae6b726..140b564060 100644
--- a/src/plugins/platforms/windows/qwindowsglcontext.cpp
+++ b/src/plugins/platforms/windows/qwindowsglcontext.cpp
@@ -751,8 +751,10 @@ static HGLRC createContext(const QOpenGLStaticContext &staticContext,
// wglCreateContextAttribsARB fails and returns NULL if the requested context
// version is not supported. This means that we will get the closest supported
// context format that that which was requested and is supported by the driver
- const int requestedVersion = qMin((format.majorVersion() << 8) + format.minorVersion(),
- staticContext.defaultFormat.version);
+ //const int requestedVersion = qMin((format.majorVersion() << 8) + format.minorVersion(),
+ // staticContext.defaultFormat.version);
+ // Suggested by Ben @ vtk-developers
+ const int requestedVersion = (format.majorVersion() << 8) + format.minorVersion();
const int majorVersion = requestedVersion >> 8;
const int minorVersion = requestedVersion & 0xFF;
and the problem persists, so I think that's a red herring.
I think this should be a blocker for 8.0.0, since it means volume rendering using QVTKOpenGLWidget
is not possible on many configurations.