From f1d537871481c7a9c63c302f0b902a12f4f3dc2a Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Wed, 8 Dec 2021 21:52:08 -0800 Subject: [PATCH 1/2] add checks for opengl render system Signed-off-by: Ian Chen --- ogre2/src/Ogre2DepthCamera.cc | 9 +++++++-- ogre2/src/Ogre2LidarVisual.cc | 12 ++++++++++-- ogre2/src/Ogre2Marker.cc | 8 ++++++++ ogre2/src/Ogre2ThermalCamera.cc | 9 +++++++-- 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/ogre2/src/Ogre2DepthCamera.cc b/ogre2/src/Ogre2DepthCamera.cc index 8efec74b2..4174870f3 100644 --- a/ogre2/src/Ogre2DepthCamera.cc +++ b/ogre2/src/Ogre2DepthCamera.cc @@ -976,8 +976,12 @@ void Ogre2DepthCamera::Render() { // GL_DEPTH_CLAMP was disabled in later version of ogre2.2 // however our shaders rely on clamped values so enable it for this sensor + auto engine = Ogre2RenderEngine::Instance(); + std::string renderSystemName = + engine->OgreRoot()->getRenderSystem()->getFriendlyName(); #ifndef _WIN32 - glEnable(GL_DEPTH_CLAMP); + if (renderSystemName.find("OpenGL") != std::string::npos) + glEnable(GL_DEPTH_CLAMP); #endif this->scene->StartRendering(this->ogreCamera); @@ -995,7 +999,8 @@ void Ogre2DepthCamera::Render() this->scene->FlushGpuCommandsAndStartNewFrame(1u, false); #ifndef _WIN32 - glDisable(GL_DEPTH_CLAMP); + if (renderSystemName.find("OpenGL") != std::string::npos) + glDisable(GL_DEPTH_CLAMP); #endif } diff --git a/ogre2/src/Ogre2LidarVisual.cc b/ogre2/src/Ogre2LidarVisual.cc index 98a604a39..f1ca7bf60 100644 --- a/ogre2/src/Ogre2LidarVisual.cc +++ b/ogre2/src/Ogre2LidarVisual.cc @@ -30,6 +30,7 @@ #include "ignition/rendering/ogre2/Ogre2Conversions.hh" #include "ignition/rendering/ogre2/Ogre2DynamicRenderable.hh" #include "ignition/rendering/ogre2/Ogre2LidarVisual.hh" +#include "ignition/rendering/ogre2/Ogre2RenderEngine.hh" #include "ignition/rendering/ogre2/Ogre2Scene.hh" #include "ignition/rendering/ogre2/Ogre2Marker.hh" #include "ignition/rendering/ogre2/Ogre2Geometry.hh" @@ -39,6 +40,7 @@ #endif #include #include +#include #include #include #ifdef _MSC_VER @@ -153,13 +155,19 @@ void Ogre2LidarVisual::Init() void Ogre2LidarVisual::Create() { // enable GL_PROGRAM_POINT_SIZE so we can set gl_PointSize in vertex shader + auto engine = Ogre2RenderEngine::Instance(); + std::string renderSystemName = + engine->OgreRoot()->getRenderSystem()->getFriendlyName(); + if (renderSystemName.find("OpenGL") != std::string::npos) + { #ifdef __APPLE__ - glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); + glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); #else #ifndef _WIN32 - glEnable(GL_PROGRAM_POINT_SIZE); + glEnable(GL_PROGRAM_POINT_SIZE); #endif #endif + } this->dataPtr->pointsMat = Ogre::MaterialManager::getSingleton().getByName( "PointCloudPoint"); diff --git a/ogre2/src/Ogre2Marker.cc b/ogre2/src/Ogre2Marker.cc index 3fa3c5151..c83e7731e 100644 --- a/ogre2/src/Ogre2Marker.cc +++ b/ogre2/src/Ogre2Marker.cc @@ -36,6 +36,7 @@ #include "ignition/rendering/ogre2/Ogre2Marker.hh" #include "ignition/rendering/ogre2/Ogre2Material.hh" #include "ignition/rendering/ogre2/Ogre2Mesh.hh" +#include "ignition/rendering/ogre2/Ogre2RenderEngine.hh" #include "ignition/rendering/ogre2/Ogre2Scene.hh" #include "ignition/rendering/ogre2/Ogre2Visual.hh" @@ -44,6 +45,7 @@ #endif #include #include +#include #include #ifdef _MSC_VER #pragma warning(pop) @@ -94,6 +96,11 @@ void Ogre2Marker::PreRender() { // enable GL_PROGRAM_POINT_SIZE so we can set gl_PointSize in vertex // shader + auto engine = Ogre2RenderEngine::Instance(); + std::string renderSystemName = + engine->OgreRoot()->getRenderSystem()->getFriendlyName(); + if (renderSystemName.find("OpenGL") != std::string::npos) + { #ifdef __APPLE__ glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); #else @@ -101,6 +108,7 @@ void Ogre2Marker::PreRender() glEnable(GL_PROGRAM_POINT_SIZE); #endif #endif + } Ogre::MaterialPtr pointsMat = Ogre::MaterialManager::getSingleton().getByName( "PointCloudPoint"); diff --git a/ogre2/src/Ogre2ThermalCamera.cc b/ogre2/src/Ogre2ThermalCamera.cc index 9b052482a..674c0653f 100644 --- a/ogre2/src/Ogre2ThermalCamera.cc +++ b/ogre2/src/Ogre2ThermalCamera.cc @@ -836,8 +836,12 @@ void Ogre2ThermalCamera::Render() { // GL_DEPTH_CLAMP is disabled in later version of ogre2.2 // however our shaders rely on clamped values so enable it for this sensor + auto engine = Ogre2RenderEngine::Instance(); + std::string renderSystemName = + engine->OgreRoot()->getRenderSystem()->getFriendlyName(); #ifndef _WIN32 - glEnable(GL_DEPTH_CLAMP); + if (renderSystemName.find("OpenGL") != std::string::npos) + glEnable(GL_DEPTH_CLAMP); #endif // update the compositors @@ -855,7 +859,8 @@ void Ogre2ThermalCamera::Render() this->scene->FlushGpuCommandsAndStartNewFrame(1u, false); #ifndef _WIN32 - glDisable(GL_DEPTH_CLAMP); + if (renderSystemName.find("OpenGL") != std::string::npos) + glDisable(GL_DEPTH_CLAMP); #endif } From 8afca431e6472c27675c5697cc3e5a25ae08192d Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Wed, 8 Dec 2021 22:22:58 -0800 Subject: [PATCH 2/2] update check Signed-off-by: Ian Chen --- ogre2/src/Ogre2DepthCamera.cc | 5 +++-- ogre2/src/Ogre2ThermalCamera.cc | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ogre2/src/Ogre2DepthCamera.cc b/ogre2/src/Ogre2DepthCamera.cc index 4174870f3..64293070e 100644 --- a/ogre2/src/Ogre2DepthCamera.cc +++ b/ogre2/src/Ogre2DepthCamera.cc @@ -979,8 +979,9 @@ void Ogre2DepthCamera::Render() auto engine = Ogre2RenderEngine::Instance(); std::string renderSystemName = engine->OgreRoot()->getRenderSystem()->getFriendlyName(); + bool useGL = renderSystemName.find("OpenGL") != std::string::npos; #ifndef _WIN32 - if (renderSystemName.find("OpenGL") != std::string::npos) + if (useGL) glEnable(GL_DEPTH_CLAMP); #endif @@ -999,7 +1000,7 @@ void Ogre2DepthCamera::Render() this->scene->FlushGpuCommandsAndStartNewFrame(1u, false); #ifndef _WIN32 - if (renderSystemName.find("OpenGL") != std::string::npos) + if (useGL) glDisable(GL_DEPTH_CLAMP); #endif } diff --git a/ogre2/src/Ogre2ThermalCamera.cc b/ogre2/src/Ogre2ThermalCamera.cc index 674c0653f..78121713d 100644 --- a/ogre2/src/Ogre2ThermalCamera.cc +++ b/ogre2/src/Ogre2ThermalCamera.cc @@ -839,8 +839,9 @@ void Ogre2ThermalCamera::Render() auto engine = Ogre2RenderEngine::Instance(); std::string renderSystemName = engine->OgreRoot()->getRenderSystem()->getFriendlyName(); + bool useGL = renderSystemName.find("OpenGL") != std::string::npos; #ifndef _WIN32 - if (renderSystemName.find("OpenGL") != std::string::npos) + if (useGL) glEnable(GL_DEPTH_CLAMP); #endif @@ -859,7 +860,7 @@ void Ogre2ThermalCamera::Render() this->scene->FlushGpuCommandsAndStartNewFrame(1u, false); #ifndef _WIN32 - if (renderSystemName.find("OpenGL") != std::string::npos) + if (useGL) glDisable(GL_DEPTH_CLAMP); #endif }