From bb2214c34aba77b55c459a55bef1fcb2bc44802d Mon Sep 17 00:00:00 2001
From: Mathias Paulin <mathias.paulin@irit.fr>
Date: Fri, 9 Apr 2021 17:09:06 +0200
Subject: [PATCH] Fix envmap opengl initialisation

---
 src/libRender/RadiumNBR/Renderer/Visualization.cpp | 9 ++++++---
 src/libRender/RadiumNBR/Renderer/Visualization.hpp | 5 +++++
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/libRender/RadiumNBR/Renderer/Visualization.cpp b/src/libRender/RadiumNBR/Renderer/Visualization.cpp
index d1cfb76..edc5998 100644
--- a/src/libRender/RadiumNBR/Renderer/Visualization.cpp
+++ b/src/libRender/RadiumNBR/Renderer/Visualization.cpp
@@ -80,6 +80,8 @@ void VisualizationController::update( const Ra::Engine::Data::ViewingParameters&
         auto defColor = Ra::Core::Utils::Color::linearRGBTosRGB( m_renderer->getBackgroundColor() );
         m_clearPass->setBackground( defColor );
     }
+    // TODO : do this only once ?
+    if ( m_envmap ) { m_envmap->updateGL(); }
 };
 
 void VisualizationController::resize( int w, int h ){
@@ -125,6 +127,7 @@ void VisualizationController::setEnvMap( const std::string& files ) {
         m_clearPass->setEnvMap( nullptr );
         m_customPass->setEnvMap( nullptr );
         m_hasEnvMap = false;
+        m_envmap = nullptr;
     }
     else
     {
@@ -138,9 +141,9 @@ void VisualizationController::setEnvMap( const std::string& files ) {
             if ( ext != "pfm" ) { t = EnvMap::EnvMapType::ENVMAP_LATLON; }
         }
         // for now, only skyboxes are managed
-        auto e = std::make_shared<EnvMap>( files, t, true );
-        m_clearPass->setEnvMap( e );
-        m_customPass->setEnvMap( e );
+        m_envmap = std::make_shared<EnvMap>( files, t, true );
+        m_clearPass->setEnvMap( m_envmap );
+        m_customPass->setEnvMap( m_envmap );
         m_hasEnvMap = true;
     }
 }
diff --git a/src/libRender/RadiumNBR/Renderer/Visualization.hpp b/src/libRender/RadiumNBR/Renderer/Visualization.hpp
index 85813d3..35f13fd 100644
--- a/src/libRender/RadiumNBR/Renderer/Visualization.hpp
+++ b/src/libRender/RadiumNBR/Renderer/Visualization.hpp
@@ -1,5 +1,7 @@
 #include <RadiumNBR/NodeBasedRenderer.hpp>
 
+#include <RadiumNBR/EnvMap.hpp>
+
 namespace RadiumNBR {
 class CustomAttribToColorPass;
 class ClearPass;
@@ -74,6 +76,9 @@ class NodeBasedRenderer_LIBRARY_API VisualizationController
 
     /// Is an envmap attached to the renderer
     bool m_hasEnvMap{false};
+
+    /// The Environment to used for skybox display
+    std::shared_ptr<EnvMap> m_envmap{nullptr};
 };
 
 } // namespace RadiumNBR
-- 
GitLab