Skip to content

Commit d889627

Browse files
committed
Exclude OGRE2 Overlay using a CMake argument (gz-rendering9)
This is mainly a port of #1175 to be activated under the parameter `USE_OGRE2_OVERLAY` enabled by default. Signed-off-by: Jose Luis Rivero <[email protected]>
1 parent a5cb37d commit d889627

File tree

7 files changed

+50
-2
lines changed

7 files changed

+50
-2
lines changed

CMakeLists.txt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ gz_configure_project(VERSION_SUFFIX)
2424
# Set project-specific options
2525
#============================================================================
2626
option(USE_UNOFFICIAL_OGRE_VERSIONS "Accept unsupported Ogre versions in the build" OFF)
27+
option(USE_OGRE2_OVERLAY "Enable OGRE2 Overlay support" ON)
2728

2829
#============================================================================
2930
# Search for project-specific dependencies
@@ -102,21 +103,32 @@ endif()
102103
# Find OGRE2: first try to find OGRE2 built with PlanarReflections support and
103104
# fallback to look for OGRE2 without it. Both seems to works for gz-rendering.
104105
# See https://github.com/gazebosim/gz-rendering/issues/597
106+
107+
# Build the list of OGRE2 components based on the options
108+
set(OGRE2_COMPONENTS HlmsPbs HlmsUnlit PlanarReflections)
109+
if(USE_OGRE2_OVERLAY)
110+
list(APPEND OGRE2_COMPONENTS Overlay)
111+
endif()
112+
105113
gz_find_package(GzOGRE2 VERSION 2.3.1
106-
COMPONENTS HlmsPbs HlmsUnlit Overlay PlanarReflections
114+
COMPONENTS ${OGRE2_COMPONENTS}
107115
PRIVATE_FOR ogre2
108116
QUIET)
109117

110118
if ("${OGRE2-PlanarReflections}" STREQUAL "OGRE2-PlanarReflections-NOTFOUND")
111119
message(STATUS "PlanarReflections component was not found. Try looking without it:")
112120
gz_find_package(GzOGRE2 VERSION 2.3.1
113-
COMPONENTS HlmsPbs HlmsUnlit Overlay
121+
COMPONENTS ${OGRE2_COMPONENTS}
114122
REQUIRED_BY ogre2
115123
PRIVATE_FOR ogre2)
116124
endif()
117125

118126
if (OGRE2_FOUND)
119127
set(GZ_RENDERING_HAVE_OGRE2 TRUE)
128+
129+
if(NOT USE_OGRE2_OVERLAY)
130+
message(STATUS "OGRE2 Overlay support disabled by configuration")
131+
endif()
120132
endif()
121133

122134
#--------------------------------------

Changelog.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
### Gazebo Rendering 9.X
44

5+
1. Conditional OGRE2 Overlay Support
6+
* By default, OGRE2 overlay support is enabled, but it can be disabled using the
7+
CMake option `USE_OGRE2_OVERLAY=OFF`. This is useful for builds using libc++
8+
version 19 or greater than are broken, see (<https://github.com/OGRECave/ogre-next/issues/541>).
9+
* [Pull request]()
10+
511
### Gazebo Rendering 9.4.0 (2025-09-05)
612

713
1. Add bazel build for ogre2 engine

include/gz/rendering/config.hh.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838

3939
#cmakedefine GZ_RENDERING_HAVE_OGRE 1
4040
#cmakedefine GZ_RENDERING_HAVE_OGRE2 1
41+
#cmakedefine GZ_RENDERING_HAVE_OGRE2_OVERLAY 1
4142
#cmakedefine GZ_RENDERING_HAVE_OPTIX 1
4243
#cmakedefine GZ_RENDERING_HAVE_VULKAN 1
4344

ogre2/include/gz/rendering/ogre2/Ogre2Includes.hh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
#ifndef GZ_RENDERING_OGRE2_OGRE2INCLUDES_HH_
1818
#define GZ_RENDERING_OGRE2_OGRE2INCLUDES_HH_
1919

20+
#include "gz/rendering/config.hh"
21+
2022
// This disables warning messages for OGRE
2123
#ifndef _MSC_VER
2224
#pragma GCC system_header
@@ -96,12 +98,14 @@
9698
#include <Compositor/Pass/PassScene/OgreCompositorPassScene.h>
9799
#include <Compositor/Pass/PassScene/OgreCompositorPassSceneDef.h>
98100

101+
#ifdef GZ_RENDERING_HAVE_OGRE2_OVERLAY
99102
#include <Overlay/OgreOverlayPrerequisites.h>
100103
#include <Overlay/OgreOverlayManager.h>
101104
#include <Overlay/OgreOverlayElement.h>
102105
#include <Overlay/OgreOverlayContainer.h>
103106
#include <Overlay/OgreFontManager.h>
104107
#include <Overlay/OgreOverlaySystem.h>
108+
#endif
105109

106110
// TODO(anyone): enable when ogre 2.1 fully supports paging
107111
// and terrain components

ogre2/include/gz/rendering/ogre2/Ogre2RenderEngine.hh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
#include <gz/common/SingletonT.hh>
2626

27+
#include "gz/rendering/config.hh"
2728
#include "gz/rendering/GraphicsAPI.hh"
2829
#include "gz/rendering/RenderEnginePlugin.hh"
2930
#include "gz/rendering/base/BaseRenderEngine.hh"
@@ -37,10 +38,12 @@ namespace Ogre
3738
class LogManager;
3839
class Root;
3940
class Window;
41+
#ifdef GZ_RENDERING_HAVE_OGRE2_OVERLAY
4042
namespace v1
4143
{
4244
class OverlaySystem;
4345
}
46+
#endif
4447

4548
class HlmsPbsTerraShadows;
4649
class CompositorWorkspaceListener;
@@ -161,8 +164,10 @@ namespace gz
161164
/// \brief Create ogre root
162165
private: void CreateRoot();
163166

167+
#ifdef GZ_RENDERING_HAVE_OGRE2_OVERLAY
164168
/// \brief Create ogre overlay component
165169
private: void CreateOverlay();
170+
#endif
166171

167172
/// \brief Create ogre plugins.
168173
private: void LoadPlugins();
@@ -187,10 +192,12 @@ namespace gz
187192
/// \return Ogre HLMS customizations
188193
public: Ogre2GzHlmsSphericalClipMinDistance &SphericalClipMinDistance();
189194

195+
#ifdef GZ_RENDERING_HAVE_OGRE2_OVERLAY
190196
/// \internal
191197
/// \brief Get a pointer to the Ogre overlay system.
192198
/// \return Pointer to the ogre overlay system.
193199
public: Ogre::v1::OverlaySystem *OverlaySystem() const;
200+
#endif
194201

195202
/// \internal
196203
/// \brief Sets the current rendering mode. See GzOgreRenderingMode
@@ -221,8 +228,10 @@ namespace gz
221228
/// \return a pointer to the render engine
222229
public: static Ogre2RenderEngine *Instance();
223230

231+
#ifdef GZ_RENDERING_HAVE_OGRE2_OVERLAY
224232
/// \brief Pointer to the ogre's overlay system
225233
private: Ogre::v1::OverlaySystem *ogreOverlaySystem = nullptr;
234+
#endif
226235

227236
/// \brief List of scenes managed by the render engine
228237
private: Ogre2SceneStorePtr scenes;

ogre2/src/Ogre2RenderEngine.cc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
#include <gz/plugin/Register.hh>
3030

31+
#include "gz/rendering/config.hh"
3132
#include "gz/rendering/GraphicsAPI.hh"
3233
#include "gz/rendering/InstallationDirectories.hh"
3334
#include "gz/rendering/RenderEngineManager.hh"
@@ -190,8 +191,10 @@ void Ogre2RenderEngine::Destroy()
190191
this->scenes->RemoveAll();
191192
}
192193

194+
#ifdef GZ_RENDERING_HAVE_OGRE2_OVERLAY
193195
delete this->ogreOverlaySystem;
194196
this->ogreOverlaySystem = nullptr;
197+
#endif
195198

196199
this->dataPtr->hlmsPbsTerraShadows.reset();
197200

@@ -501,7 +504,9 @@ void Ogre2RenderEngine::LoadAttempt()
501504
}
502505

503506
this->CreateRoot();
507+
#ifdef GZ_RENDERING_HAVE_OGRE2_OVERLAY
504508
this->CreateOverlay();
509+
#endif
505510
this->LoadPlugins();
506511
this->CreateRenderSystem();
507512
this->ogreRoot->initialise(false);
@@ -636,11 +641,13 @@ void Ogre2RenderEngine::CreateRoot()
636641
}
637642
}
638643

644+
#ifdef GZ_RENDERING_HAVE_OGRE2_OVERLAY
639645
//////////////////////////////////////////////////
640646
void Ogre2RenderEngine::CreateOverlay()
641647
{
642648
this->ogreOverlaySystem = new Ogre::v1::OverlaySystem();
643649
}
650+
#endif
644651

645652
//////////////////////////////////////////////////
646653
void Ogre2RenderEngine::LoadPlugins()
@@ -1416,11 +1423,13 @@ SphericalClipMinDistance()
14161423
return this->dataPtr->sphericalClipMinDistance;
14171424
}
14181425

1426+
#ifdef GZ_RENDERING_HAVE_OGRE2_OVERLAY
14191427
/////////////////////////////////////////////////
14201428
Ogre::v1::OverlaySystem *Ogre2RenderEngine::OverlaySystem() const
14211429
{
14221430
return this->ogreOverlaySystem;
14231431
}
1432+
#endif
14241433

14251434
/////////////////////////////////////////////////
14261435
void Ogre2RenderEngine::SetGzOgreRenderingMode(

ogre2/src/Ogre2Scene.cc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131

3232
#include <gz/common/Console.hh>
3333

34+
#include "gz/rendering/config.hh"
3435
#include "gz/rendering/base/SceneExt.hh"
3536
#include "gz/rendering/GraphicsAPI.hh"
3637
#include "gz/rendering/RenderTypes.hh"
@@ -83,8 +84,10 @@
8384
#include <OgrePlatformInformation.h>
8485
#include <OgreRoot.h>
8586
#include <OgreSceneManager.h>
87+
#ifdef GZ_RENDERING_HAVE_OGRE2_OVERLAY
8688
#include <Overlay/OgreOverlayManager.h>
8789
#include <Overlay/OgreOverlaySystem.h>
90+
#endif
8891
#if OGRE_VERSION_MAJOR == 2 && OGRE_VERSION_MINOR == 1
8992
#include <OgreHlms.h>
9093
#include <OgreHlmsManager.h>
@@ -501,11 +504,13 @@ void Ogre2Scene::Destroy()
501504

502505
BaseScene::Destroy();
503506

507+
#ifdef GZ_RENDERING_HAVE_OGRE2_OVERLAY
504508
if (this->ogreSceneManager)
505509
{
506510
this->ogreSceneManager->removeRenderQueueListener(
507511
Ogre2RenderEngine::Instance()->OverlaySystem());
508512
}
513+
#endif
509514

510515
if (this->dataPtr->activeGi)
511516
{
@@ -1477,12 +1482,14 @@ void Ogre2Scene::CreateContext()
14771482
this->ogreSceneManager = root->createSceneManager(Ogre::ST_GENERIC,
14781483
numThreads);
14791484

1485+
#ifdef GZ_RENDERING_HAVE_OGRE2_OVERLAY
14801486
this->ogreSceneManager->addRenderQueueListener(
14811487
Ogre2RenderEngine::Instance()->OverlaySystem());
14821488

14831489
this->ogreSceneManager->getRenderQueue()->setSortRenderQueue(
14841490
Ogre::v1::OverlayManager::getSingleton().mDefaultRenderQueueId,
14851491
Ogre::RenderQueue::StableSort);
1492+
#endif
14861493

14871494
// Set sane defaults for proper shadow mapping
14881495
this->ogreSceneManager->setShadowDirectionalLightExtrusionDistance(500.0f);

0 commit comments

Comments
 (0)