Skip to content

Commit cd23db7

Browse files
j-riveromergify[bot]
authored andcommitted
Exclude OGRE2 Overlay using a CMake argument (gz-rendering9) (#1177)
* 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]> Co-authored-by: Silvio Traversaro <[email protected]> (cherry picked from commit bb0e866) # Conflicts: # Changelog.md
1 parent a52d39d commit cd23db7

File tree

7 files changed

+59
-2
lines changed

7 files changed

+59
-2
lines changed

CMakeLists.txt

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

2728
#============================================================================
2829
# Search for project-specific dependencies
@@ -97,21 +98,33 @@ endif()
9798
# Find OGRE2: first try to find OGRE2 built with PlanarReflections support and
9899
# fallback to look for OGRE2 without it. Both seems to works for gz-rendering.
99100
# See https://github.com/gazebosim/gz-rendering/issues/597
101+
102+
# Build the list of OGRE2 components based on the options
103+
set(OGRE2_COMPONENTS HlmsPbs HlmsUnlit PlanarReflections)
104+
if(USE_OGRE2_OVERLAY)
105+
list(APPEND OGRE2_COMPONENTS Overlay)
106+
set(GZ_RENDERING_HAVE_OGRE2_OVERLAY TRUE)
107+
endif()
108+
100109
gz_find_package(GzOGRE2 VERSION 2.3.1
101-
COMPONENTS HlmsPbs HlmsUnlit Overlay PlanarReflections
110+
COMPONENTS ${OGRE2_COMPONENTS}
102111
PRIVATE_FOR ogre2
103112
QUIET)
104113

105114
if ("${OGRE2-PlanarReflections}" STREQUAL "OGRE2-PlanarReflections-NOTFOUND")
106115
message(STATUS "PlanarReflections component was not found. Try looking without it:")
107116
gz_find_package(GzOGRE2 VERSION 2.3.1
108-
COMPONENTS HlmsPbs HlmsUnlit Overlay
117+
COMPONENTS ${OGRE2_COMPONENTS}
109118
REQUIRED_BY ogre2
110119
PRIVATE_FOR ogre2)
111120
endif()
112121

113122
if (OGRE2_FOUND)
114123
set(GZ_RENDERING_HAVE_OGRE2 TRUE)
124+
125+
if(NOT USE_OGRE2_OVERLAY)
126+
message(STATUS "OGRE2 Overlay support disabled by configuration")
127+
endif()
115128
endif()
116129

117130
#--------------------------------------

Changelog.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,20 @@
3838

3939
### Gazebo Rendering 9.X
4040

41+
<<<<<<< HEAD
42+
=======
43+
1. Conditional OGRE2 Overlay Support
44+
* By default, OGRE2 overlay support is enabled, but it can be disabled using the
45+
CMake option `USE_OGRE2_OVERLAY=OFF`. This is useful for builds using libc++
46+
version 19 or greater than are broken, see (<https://github.com/OGRECave/ogre-next/issues/541>).
47+
* [Pull request]()
48+
49+
### Gazebo Rendering 9.4.0 (2025-09-05)
50+
51+
1. Add bazel build for ogre2 engine
52+
* [Pull request #1157](https://github.com/gazebosim/gz-rendering/pull/1157)
53+
54+
>>>>>>> bb0e8662 (Exclude OGRE2 Overlay using a CMake argument (gz-rendering9) (#1177))
4155
### Gazebo Rendering 9.3.0 (2025-07-25)
4256

4357
1. Guard against bad memory access in RenderPassSystem

include/gz/rendering/config.hh.in

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

3535
#cmakedefine GZ_RENDERING_HAVE_OGRE 1
3636
#cmakedefine GZ_RENDERING_HAVE_OGRE2 1
37+
#cmakedefine GZ_RENDERING_HAVE_OGRE2_OVERLAY 1
3738
#cmakedefine GZ_RENDERING_HAVE_OPTIX 1
3839
#cmakedefine GZ_RENDERING_HAVE_VULKAN 1
3940

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)