From f1046d3a5c3c067c6e49617ae26ee84d387eba80 Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Tue, 19 Mar 2019 14:48:26 +0100
Subject: [PATCH] [DE] Fixed uninitialized OpenGL render window.

Used the following reference implementation:

https://github.com/Kitware/VTK/blob/v8.2.0/Examples/GUI/Qt/SimpleView/SimpleView.cxx
---
 .../VtkVis/VisualizationWidget.cpp            | 36 ++++++++++---------
 1 file changed, 19 insertions(+), 17 deletions(-)

diff --git a/Applications/DataExplorer/VtkVis/VisualizationWidget.cpp b/Applications/DataExplorer/VtkVis/VisualizationWidget.cpp
index 052b75b5865..c612e8f7104 100644
--- a/Applications/DataExplorer/VtkVis/VisualizationWidget.cpp
+++ b/Applications/DataExplorer/VtkVis/VisualizationWidget.cpp
@@ -20,21 +20,23 @@
 #include "VtkCustomInteractorStyle.h"
 #include "VtkPickCallback.h"
 
+#include <vtkAxesActor.h>
 #include <vtkCamera.h>
 #include <vtkCellPicker.h>
-#include <vtkRenderWindow.h>
-#include <vtkRenderer.h>
-#include <vtkSmartPointer.h>
-
-#include <vtkAxesActor.h>
 #include <vtkCommand.h>
+#include <vtkGenericOpenGLRenderWindow.h>
 #include <vtkInteractorStyleRubberBandZoom.h>
 #include <vtkInteractorStyleSwitch.h>
 #include <vtkMath.h>
+#include <vtkNew.h>
 #include <vtkOrientationMarkerWidget.h>
 #include <vtkPNGWriter.h>
+#include <vtkRenderer.h>
+#include <vtkRenderWindow.h>
+#include <vtkRenderWindow.h>
 #include <vtkRenderWindowInteractor.h>
 #include <vtkSmartPointer.h>
+#include <vtkSmartPointer.h>
 #include <vtkWindowToImageFilter.h>
 
 #include <QCursor>
@@ -50,30 +52,31 @@ VisualizationWidget::VisualizationWidget(QWidget* parent /*= 0*/)
 {
     this->setupUi(this);
 
+    vtkNew<vtkRenderer> ren;
+    _vtkRender = ren;
+
+    vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
+    vtkWidget->SetRenderWindow(renderWindow);
+    vtkWidget->GetRenderWindow()->AddRenderer(ren);
+
     _interactorStyle = VtkCustomInteractorStyle::New();
-    vtkWidget->GetRenderWindow()->GetInteractor()->SetInteractorStyle(_interactorStyle);
+    renderWindow->GetInteractor()->SetInteractorStyle(_interactorStyle);
+    _interactorStyle->SetDefaultRenderer(ren);
 
     _vtkPickCallback = VtkPickCallback::New();
     vtkSmartPointer<vtkCellPicker> picker = vtkSmartPointer<vtkCellPicker>::New();
     picker->AddObserver(vtkCommand::EndPickEvent, _vtkPickCallback);
-    vtkWidget->GetRenderWindow()->GetInteractor()->SetPicker(picker);
-
-    vtkSmartPointer<vtkRenderWindow> renderWindow = vtkWidget->GetRenderWindow();
-    renderWindow->StereoCapableWindowOn();
-    renderWindow->SetStereoTypeToCrystalEyes();
-    _vtkRender = vtkRenderer::New();
-    renderWindow->AddRenderer(_vtkRender);
-    _interactorStyle->SetDefaultRenderer(_vtkRender);
+    renderWindow->GetInteractor()->SetPicker(picker);
 
     QSettings settings;
 
-    _vtkRender->SetBackground(0.0,0.0,0.0);
+    ren->SetBackground(0.0,0.0,0.0);
 
     // Create an orientation marker using vtkAxesActor
     vtkSmartPointer<vtkAxesActor> axesActor = vtkSmartPointer<vtkAxesActor>::New();
     _markerWidget = vtkOrientationMarkerWidget::New();
     _markerWidget->SetOrientationMarker(axesActor);
-    _markerWidget->SetInteractor(vtkWidget->GetRenderWindow()->GetInteractor());
+    _markerWidget->SetInteractor(renderWindow->GetInteractor());
     _markerWidget->EnabledOn();
     _markerWidget->InteractiveOff();
 
@@ -89,7 +92,6 @@ VisualizationWidget::~VisualizationWidget()
     _vtkPickCallback->Delete();
     _interactorStyle->Delete();
     _markerWidget->Delete();
-    _vtkRender->Delete();
 }
 
 VtkCustomInteractorStyle* VisualizationWidget::interactorStyle() const
-- 
GitLab