From 76d8d5681294946622a46913c22e8fad1c3271fa Mon Sep 17 00:00:00 2001 From: Simon Schmeisser Date: Mon, 28 Mar 2022 21:45:22 +0200 Subject: [PATCH] initialize resources only after the RTShaderSystem has been started --- src/rviz/ogre_helpers/render_system.cpp | 6 +++++- src/rviz/ogre_helpers/render_system.h | 2 ++ src/rviz/visualization_manager.cpp | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/rviz/ogre_helpers/render_system.cpp b/src/rviz/ogre_helpers/render_system.cpp index 10ecfe0096..76fec5652e 100644 --- a/src/rviz/ogre_helpers/render_system.cpp +++ b/src/rviz/ogre_helpers/render_system.cpp @@ -115,7 +115,6 @@ RenderSystem::RenderSystem() : ogre_overlay_system_(nullptr), stereo_supported_( makeRenderWindow(dummy_window_id_, 1, 1); detectGlVersion(); setupResources(); - Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); } void RenderSystem::prepareOverlays(Ogre::SceneManager* scene_manager) @@ -124,6 +123,11 @@ void RenderSystem::prepareOverlays(Ogre::SceneManager* scene_manager) scene_manager->addRenderQueueListener(ogre_overlay_system_); } +void RenderSystem::initialiseResources() +{ + Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); +} + void RenderSystem::setupDummyWindowId() { #if defined(Q_OS_MAC) || defined(Q_OS_WIN) diff --git a/src/rviz/ogre_helpers/render_system.h b/src/rviz/ogre_helpers/render_system.h index 979af79f0b..e99a6f450e 100644 --- a/src/rviz/ogre_helpers/render_system.h +++ b/src/rviz/ogre_helpers/render_system.h @@ -67,6 +67,8 @@ class RVIZ_EXPORT RenderSystem // Needed for Ogre >= 1.9 to use fonts; does nothing for prior versions. void prepareOverlays(Ogre::SceneManager* scene_manager); + void initialiseResources(); + // @brief return OpenGl Version as integer, e.g. 320 for OpenGl 3.20 int getGlVersion() { diff --git a/src/rviz/visualization_manager.cpp b/src/rviz/visualization_manager.cpp index e4076d04df..51de63db08 100644 --- a/src/rviz/visualization_manager.cpp +++ b/src/rviz/visualization_manager.cpp @@ -161,6 +161,9 @@ VisualizationManager::VisualizationManager(RenderPanel* render_panel, Ogre::MaterialManager::getSingleton().addListener(private_->material_mgr_listener_); //} + // We need to wait with resource initialization till the RTShaderSystem is enabled + rviz::RenderSystem::RenderSystem::get()->initialiseResources(); + directional_light_ = scene_manager_->createLight("MainDirectional"); directional_light_->setType(Ogre::Light::LT_DIRECTIONAL); directional_light_->setDirection(Ogre::Vector3(-1, 0, -1));