diff --git a/ogre2/src/Ogre2DepthCamera.cc b/ogre2/src/Ogre2DepthCamera.cc index 8efec74b2..64293070e 100644 --- a/ogre2/src/Ogre2DepthCamera.cc +++ b/ogre2/src/Ogre2DepthCamera.cc @@ -976,8 +976,13 @@ 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(); + bool useGL = renderSystemName.find("OpenGL") != std::string::npos; #ifndef _WIN32 - glEnable(GL_DEPTH_CLAMP); + if (useGL) + glEnable(GL_DEPTH_CLAMP); #endif this->scene->StartRendering(this->ogreCamera); @@ -995,7 +1000,8 @@ void Ogre2DepthCamera::Render() this->scene->FlushGpuCommandsAndStartNewFrame(1u, false); #ifndef _WIN32 - glDisable(GL_DEPTH_CLAMP); + if (useGL) + 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..78121713d 100644 --- a/ogre2/src/Ogre2ThermalCamera.cc +++ b/ogre2/src/Ogre2ThermalCamera.cc @@ -836,8 +836,13 @@ 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(); + bool useGL = renderSystemName.find("OpenGL") != std::string::npos; #ifndef _WIN32 - glEnable(GL_DEPTH_CLAMP); + if (useGL) + glEnable(GL_DEPTH_CLAMP); #endif // update the compositors @@ -855,7 +860,8 @@ void Ogre2ThermalCamera::Render() this->scene->FlushGpuCommandsAndStartNewFrame(1u, false); #ifndef _WIN32 - glDisable(GL_DEPTH_CLAMP); + if (useGL) + glDisable(GL_DEPTH_CLAMP); #endif }