From 60322722767bfc430ddff6741ff8c84609c07b1b Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Mon, 30 Oct 2023 22:19:42 +0000 Subject: [PATCH 1/3] Use metal as default on apple, fix compile warning, remove optix Signed-off-by: Ian Chen --- examples/actor_animation/Main.cc | 4 ++ examples/boundingbox_camera/Main.cc | 22 ++++++++- examples/camera_tracking/Main.cc | 5 +- .../custom_scene_viewer/ManualSceneDemo.cc | 4 ++ examples/custom_shaders_uniforms/Main.cc | 4 ++ examples/depth_camera/Main.cc | 6 ++- examples/heightmap/Main.cc | 4 ++ examples/lidar_visual/Main.cc | 4 ++ examples/mesh_viewer/Main.cc | 5 +- examples/mouse_picking/Main.cc | 5 +- examples/ogre2_demo/Main.cc | 4 ++ examples/particles_demo/Main.cc | 4 ++ examples/projector/Main.cc | 5 +- examples/render_pass/Main.cc | 5 +- examples/segmentation_camera/Main.cc | 4 ++ examples/simple_demo/Main.cc | 5 +- examples/simple_demo_qml/ThreadRenderer.cpp | 46 ++++++++++++++++--- examples/text_geom/Main.cc | 1 - examples/thermal_camera/Main.cc | 4 ++ examples/transform_control/Main.cc | 5 +- examples/view_control/Main.cc | 5 +- examples/visualization_demo/Main.cc | 5 +- examples/waves/Main.cc | 4 ++ examples/wide_angle_camera/Main.cc | 25 ++++++++-- ogre2/src/Ogre2Material.cc | 1 + 25 files changed, 163 insertions(+), 23 deletions(-) diff --git a/examples/actor_animation/Main.cc b/examples/actor_animation/Main.cc index 70a3546fa..565af7c95 100644 --- a/examples/actor_animation/Main.cc +++ b/examples/actor_animation/Main.cc @@ -188,7 +188,11 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/boundingbox_camera/Main.cc b/examples/boundingbox_camera/Main.cc index b19815bec..734ccd622 100644 --- a/examples/boundingbox_camera/Main.cc +++ b/examples/boundingbox_camera/Main.cc @@ -217,10 +217,11 @@ void buildScene(ScenePtr _scene, BoundingBoxType _type) ////////////////////////////////////////////////// std::vector createCameras(const std::string &_engineName, + const std::map& _params, BoundingBoxType _type) { // create and populate scene - RenderEngine *engine = rendering::engine(_engineName); + RenderEngine *engine = rendering::engine(_engineName, _params); if (!engine) { gzwarn << "Engine '" << _engineName @@ -271,6 +272,16 @@ int main(int _argc, char** _argv) } } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else + GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif + if (_argc > 2) + { + graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); + } + common::Console::SetVerbosity(4); std::vector engineNames; std::vector cameras; @@ -281,7 +292,14 @@ int main(int _argc, char** _argv) { try { - cameras = createCameras(engineName, bboxType); + std::map params; + if (engineName.compare("ogre2") == 0 + && graphicsApi == GraphicsAPI::METAL) + { + params["metal"] = "1"; + } + + cameras = createCameras(engineName, params, bboxType); } catch (...) { diff --git a/examples/camera_tracking/Main.cc b/examples/camera_tracking/Main.cc index 398b73b31..f8d7e4e93 100644 --- a/examples/camera_tracking/Main.cc +++ b/examples/camera_tracking/Main.cc @@ -127,7 +127,11 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); @@ -139,7 +143,6 @@ int main(int _argc, char** _argv) std::vector nodes; engineNames.push_back(ogreEngineName); - engineNames.push_back("optix"); for (auto engineName : engineNames) { diff --git a/examples/custom_scene_viewer/ManualSceneDemo.cc b/examples/custom_scene_viewer/ManualSceneDemo.cc index 072f698a6..551b37ff1 100644 --- a/examples/custom_scene_viewer/ManualSceneDemo.cc +++ b/examples/custom_scene_viewer/ManualSceneDemo.cc @@ -192,7 +192,11 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/custom_shaders_uniforms/Main.cc b/examples/custom_shaders_uniforms/Main.cc index 009681621..fc46fdd75 100644 --- a/examples/custom_shaders_uniforms/Main.cc +++ b/examples/custom_shaders_uniforms/Main.cc @@ -167,7 +167,11 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/depth_camera/Main.cc b/examples/depth_camera/Main.cc index 08bf8a8f9..ffaf64f8c 100644 --- a/examples/depth_camera/Main.cc +++ b/examples/depth_camera/Main.cc @@ -115,7 +115,7 @@ void buildScene(ScenePtr _scene) camera->SetImageFormat(PixelFormat::PF_FLOAT32_RGBA); camera->SetNearClipPlane(0.15); camera->SetFarClipPlane(10.0); - camera->SetAntiAliasing(2); + camera->SetAntiAliasing(2); camera->CreateDepthTexture(); root->AddChild(camera); @@ -154,7 +154,11 @@ int main(int _argc, char** _argv) engineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/heightmap/Main.cc b/examples/heightmap/Main.cc index 6aaf6e143..9fff45d43 100644 --- a/examples/heightmap/Main.cc +++ b/examples/heightmap/Main.cc @@ -324,7 +324,11 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2 && buildDemScene != 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/lidar_visual/Main.cc b/examples/lidar_visual/Main.cc index 340394171..868d9776b 100644 --- a/examples/lidar_visual/Main.cc +++ b/examples/lidar_visual/Main.cc @@ -272,7 +272,11 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/mesh_viewer/Main.cc b/examples/mesh_viewer/Main.cc index 32d9f0f51..311ccee93 100644 --- a/examples/mesh_viewer/Main.cc +++ b/examples/mesh_viewer/Main.cc @@ -142,7 +142,11 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); @@ -153,7 +157,6 @@ int main(int _argc, char** _argv) std::vector cameras; engineNames.push_back(ogreEngineName); - engineNames.push_back("optix"); for (auto engineName : engineNames) { diff --git a/examples/mouse_picking/Main.cc b/examples/mouse_picking/Main.cc index 589839fc2..0e62cd2d0 100644 --- a/examples/mouse_picking/Main.cc +++ b/examples/mouse_picking/Main.cc @@ -135,7 +135,11 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); @@ -146,7 +150,6 @@ int main(int _argc, char** _argv) std::vector cameras; engineNames.push_back(ogreEngineName); - engineNames.push_back("optix"); for (auto engineName : engineNames) { diff --git a/examples/ogre2_demo/Main.cc b/examples/ogre2_demo/Main.cc index 337cf1d12..8d3183d3a 100644 --- a/examples/ogre2_demo/Main.cc +++ b/examples/ogre2_demo/Main.cc @@ -317,7 +317,11 @@ int main(int _argc, char** _argv) std::vector engineNames; std::vector cameras; +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/particles_demo/Main.cc b/examples/particles_demo/Main.cc index 03dbca5b6..a35da5845 100644 --- a/examples/particles_demo/Main.cc +++ b/examples/particles_demo/Main.cc @@ -168,7 +168,11 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/projector/Main.cc b/examples/projector/Main.cc index a991c98dd..19b7fba85 100644 --- a/examples/projector/Main.cc +++ b/examples/projector/Main.cc @@ -180,7 +180,11 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); @@ -191,7 +195,6 @@ int main(int _argc, char** _argv) std::vector cameras; engineNames.push_back(ogreEngineName); - engineNames.push_back("optix"); for (auto engineName : engineNames) { try diff --git a/examples/render_pass/Main.cc b/examples/render_pass/Main.cc index a3a1c86bc..6001add7c 100644 --- a/examples/render_pass/Main.cc +++ b/examples/render_pass/Main.cc @@ -198,7 +198,11 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); @@ -209,7 +213,6 @@ int main(int _argc, char** _argv) std::vector cameras; engineNames.push_back(ogreEngineName); - engineNames.push_back("optix"); for (auto engineName : engineNames) { try diff --git a/examples/segmentation_camera/Main.cc b/examples/segmentation_camera/Main.cc index 46a07f0c0..1a580732f 100644 --- a/examples/segmentation_camera/Main.cc +++ b/examples/segmentation_camera/Main.cc @@ -150,7 +150,11 @@ int main(int _argc, char** _argv) engineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/simple_demo/Main.cc b/examples/simple_demo/Main.cc index 3a32e1391..ef9c8030d 100644 --- a/examples/simple_demo/Main.cc +++ b/examples/simple_demo/Main.cc @@ -218,7 +218,11 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); @@ -229,7 +233,6 @@ int main(int _argc, char** _argv) std::vector cameras; engineNames.push_back(ogreEngineName); - engineNames.push_back("optix"); for (auto engineName : engineNames) { diff --git a/examples/simple_demo_qml/ThreadRenderer.cpp b/examples/simple_demo_qml/ThreadRenderer.cpp index 91731ef5f..26b1606d5 100644 --- a/examples/simple_demo_qml/ThreadRenderer.cpp +++ b/examples/simple_demo_qml/ThreadRenderer.cpp @@ -129,7 +129,7 @@ void RenderThread::Print(const QSurfaceFormat &_format) return "CompatibilityProfile"; default: return "Invalid OpenGLContextProfile"; - } + } }; auto renderableTypeToString = [] (QSurfaceFormat::RenderableType _value) -> std::string @@ -146,7 +146,7 @@ void RenderThread::Print(const QSurfaceFormat &_format) return "OpenVG"; default: return "Invalid RenderableType"; - } + } }; auto swapBehaviorToString = [] (QSurfaceFormat::SwapBehavior _value) -> std::string @@ -161,7 +161,7 @@ void RenderThread::Print(const QSurfaceFormat &_format) return "DoubleBuffer"; default: return "Invalid SwapBehavior"; - } + } }; // surface format info @@ -200,7 +200,7 @@ QSurfaceFormat RenderThread::CreateSurfaceFormat() format.setProfile(QSurfaceFormat::CoreProfile); format.setRenderableType(QSurfaceFormat::OpenGL); - return format; + return format; } //-------------------------------------------------------------------------- @@ -273,7 +273,26 @@ TextureNode::TextureNode(QQuickWindow *_window) { // Our texture node must have a texture, so use the default 0 texture. // createTextureFromNativeObject() +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) +# ifndef _WIN32 +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +# endif this->texture = this->window->createTextureFromId(0, QSize(1, 1)); +# ifndef _WIN32 +# pragma GCC diagnostic pop +# endif +#else + int texId = 0; + this->texture = + this->window->createTextureFromNativeObject( + QQuickWindow::NativeObjectTexture, + static_cast(&texId), + 0, + QSize(1, 1)); +#endif + + this->setTexture(this->texture); this->setFiltering(QSGTexture::Linear); } @@ -314,8 +333,23 @@ void TextureNode::PrepareNode() this->texture = nullptr; // note: include QQuickWindow::TextureHasAlphaChannel if the rendered content // has alpha. - // createTextureFromNativeObject +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) +# ifndef _WIN32 +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +# endif this->texture = this->window->createTextureFromId(newId, size); +# ifndef _WIN32 +# pragma GCC diagnostic pop +# endif +#else + this->texture = + this->window->createTextureFromNativeObject( + QQuickWindow::NativeObjectTexture, + static_cast(&newId), + 0, + size); +#endif this->setTexture(this->texture); this->markDirty(DirtyMaterial); @@ -342,7 +376,7 @@ void ThreadRenderer::Ready() this->renderThread->surface->setFormat(this->renderThread->context->format()); this->renderThread->surface->create(); - // carry out any initialisation before moving to thread + // carry out any initialisation before moving to thread this->renderThread->InitialiseOnMainThread(); // Move to Render thread diff --git a/examples/text_geom/Main.cc b/examples/text_geom/Main.cc index 26033be35..7149d1df0 100644 --- a/examples/text_geom/Main.cc +++ b/examples/text_geom/Main.cc @@ -126,7 +126,6 @@ int main(int _argc, char** _argv) std::vector cameras; engineNames.push_back("ogre"); - engineNames.push_back("optix"); for (auto engineName : engineNames) { try diff --git a/examples/thermal_camera/Main.cc b/examples/thermal_camera/Main.cc index 5e7fe2701..eb37088cb 100644 --- a/examples/thermal_camera/Main.cc +++ b/examples/thermal_camera/Main.cc @@ -138,7 +138,11 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/transform_control/Main.cc b/examples/transform_control/Main.cc index 79a0b8e7e..d0feef3aa 100644 --- a/examples/transform_control/Main.cc +++ b/examples/transform_control/Main.cc @@ -121,7 +121,11 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); @@ -132,7 +136,6 @@ int main(int _argc, char** _argv) std::vector cameras; engineNames.push_back(ogreEngineName); - engineNames.push_back("optix"); for (auto engineName : engineNames) { diff --git a/examples/view_control/Main.cc b/examples/view_control/Main.cc index a501e3cff..25fd38944 100644 --- a/examples/view_control/Main.cc +++ b/examples/view_control/Main.cc @@ -167,7 +167,11 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); @@ -178,7 +182,6 @@ int main(int _argc, char** _argv) std::vector cameras; engineNames.push_back(ogreEngineName); - engineNames.push_back("optix"); for (auto engineName : engineNames) { try diff --git a/examples/visualization_demo/Main.cc b/examples/visualization_demo/Main.cc index 23ace7294..04ce442f1 100644 --- a/examples/visualization_demo/Main.cc +++ b/examples/visualization_demo/Main.cc @@ -248,7 +248,11 @@ int main(int _argc, char** _argv) engine = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); @@ -259,7 +263,6 @@ int main(int _argc, char** _argv) std::vector cameras; engineNames.push_back(engine); - engineNames.push_back("optix"); for (auto engineName : engineNames) { diff --git a/examples/waves/Main.cc b/examples/waves/Main.cc index 14d04e39a..b273e59fb 100644 --- a/examples/waves/Main.cc +++ b/examples/waves/Main.cc @@ -164,7 +164,11 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/wide_angle_camera/Main.cc b/examples/wide_angle_camera/Main.cc index 02da36123..d200246b5 100644 --- a/examples/wide_angle_camera/Main.cc +++ b/examples/wide_angle_camera/Main.cc @@ -137,10 +137,11 @@ void buildScene(ScenePtr _scene) } ////////////////////////////////////////////////// -CameraPtr createCamera(const std::string &_engineName) +CameraPtr createCamera(const std::string &_engineName, + const std::map& _params) { // create and populate scene - RenderEngine *engine = rendering::engine(_engineName); + RenderEngine *engine = rendering::engine(_engineName, _params); if (!engine) { gzwarn << "Engine '" << _engineName @@ -168,18 +169,34 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } +#ifdef __APPLE__ + GraphicsAPI graphicsApi = GraphicsAPI::METAL; +#else + GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; +#endif + if (_argc > 2) + { + graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); + } + common::Console::SetVerbosity(4); std::vector engineNames; std::vector cameras; engineNames.push_back(ogreEngineName); - engineNames.push_back("optix"); for (auto engineName : engineNames) { try { - CameraPtr camera = createCamera(engineName); + std::map params; + if (engineName.compare("ogre2") == 0 + && graphicsApi == GraphicsAPI::METAL) + { + params["metal"] = "1"; + } + + CameraPtr camera = createCamera(engineName, params); if (camera) { cameras.push_back(camera); diff --git a/ogre2/src/Ogre2Material.cc b/ogre2/src/Ogre2Material.cc index ee65af868..8705d6826 100644 --- a/ogre2/src/Ogre2Material.cc +++ b/ogre2/src/Ogre2Material.cc @@ -1242,6 +1242,7 @@ void Ogre2Material::SetTextureMapDataImpl(const std::string& _name, // upload raw color image data to gpu texture Ogre::Image2 img; img.loadDynamicImage(&data[0], false, texture); + // img.save(_name, 1, 1); img.uploadTo(texture, 0, 0); } From 5e23aaf05d76cd8832725a6c3d0588ff222cb3b2 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Mon, 30 Oct 2023 22:24:10 +0000 Subject: [PATCH 2/3] cleanup Signed-off-by: Ian Chen --- examples/simple_demo_qml/ThreadRenderer.cpp | 2 -- ogre2/src/Ogre2Material.cc | 1 - 2 files changed, 3 deletions(-) diff --git a/examples/simple_demo_qml/ThreadRenderer.cpp b/examples/simple_demo_qml/ThreadRenderer.cpp index 26b1606d5..4aff4dee6 100644 --- a/examples/simple_demo_qml/ThreadRenderer.cpp +++ b/examples/simple_demo_qml/ThreadRenderer.cpp @@ -272,7 +272,6 @@ TextureNode::TextureNode(QQuickWindow *_window) , window(_window) { // Our texture node must have a texture, so use the default 0 texture. - // createTextureFromNativeObject() #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) # ifndef _WIN32 # pragma GCC diagnostic push @@ -292,7 +291,6 @@ TextureNode::TextureNode(QQuickWindow *_window) QSize(1, 1)); #endif - this->setTexture(this->texture); this->setFiltering(QSGTexture::Linear); } diff --git a/ogre2/src/Ogre2Material.cc b/ogre2/src/Ogre2Material.cc index 8705d6826..ee65af868 100644 --- a/ogre2/src/Ogre2Material.cc +++ b/ogre2/src/Ogre2Material.cc @@ -1242,7 +1242,6 @@ void Ogre2Material::SetTextureMapDataImpl(const std::string& _name, // upload raw color image data to gpu texture Ogre::Image2 img; img.loadDynamicImage(&data[0], false, texture); - // img.save(_name, 1, 1); img.uploadTo(texture, 0, 0); } From 522e36c9dc2ffbd7a76feeb3db5cf34854762626 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Tue, 31 Oct 2023 22:22:27 +0000 Subject: [PATCH 3/3] Add defaultGraphicsAPI utility function Signed-off-by: Ian Chen --- examples/actor_animation/Main.cc | 6 +----- examples/boundingbox_camera/Main.cc | 6 +----- examples/camera_tracking/Main.cc | 6 +----- examples/custom_scene_viewer/ManualSceneDemo.cc | 6 +----- examples/custom_shaders_uniforms/Main.cc | 6 +----- examples/depth_camera/Main.cc | 6 +----- examples/heightmap/Main.cc | 6 +----- examples/lidar_visual/Main.cc | 6 +----- examples/mesh_viewer/Main.cc | 6 +----- examples/mouse_picking/Main.cc | 6 +----- examples/ogre2_demo/Main.cc | 6 +----- examples/particles_demo/Main.cc | 6 +----- examples/projector/Main.cc | 6 +----- examples/render_pass/Main.cc | 6 +----- examples/segmentation_camera/Main.cc | 6 +----- examples/simple_demo/Main.cc | 6 +----- examples/thermal_camera/Main.cc | 6 +----- examples/transform_control/Main.cc | 6 +----- examples/view_control/Main.cc | 6 +----- examples/visualization_demo/Main.cc | 6 +----- examples/waves/Main.cc | 6 +----- examples/wide_angle_camera/Main.cc | 6 +----- include/gz/rendering/Utils.hh | 7 +++++++ src/Utils.cc | 13 ++++++++++++- 24 files changed, 41 insertions(+), 111 deletions(-) diff --git a/examples/actor_animation/Main.cc b/examples/actor_animation/Main.cc index 565af7c95..42d54a658 100644 --- a/examples/actor_animation/Main.cc +++ b/examples/actor_animation/Main.cc @@ -188,11 +188,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/boundingbox_camera/Main.cc b/examples/boundingbox_camera/Main.cc index 734ccd622..1cf00c590 100644 --- a/examples/boundingbox_camera/Main.cc +++ b/examples/boundingbox_camera/Main.cc @@ -272,11 +272,7 @@ int main(int _argc, char** _argv) } } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/camera_tracking/Main.cc b/examples/camera_tracking/Main.cc index f8d7e4e93..03279a92e 100644 --- a/examples/camera_tracking/Main.cc +++ b/examples/camera_tracking/Main.cc @@ -127,11 +127,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/custom_scene_viewer/ManualSceneDemo.cc b/examples/custom_scene_viewer/ManualSceneDemo.cc index 551b37ff1..5af164988 100644 --- a/examples/custom_scene_viewer/ManualSceneDemo.cc +++ b/examples/custom_scene_viewer/ManualSceneDemo.cc @@ -192,11 +192,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/custom_shaders_uniforms/Main.cc b/examples/custom_shaders_uniforms/Main.cc index fc46fdd75..093de95b2 100644 --- a/examples/custom_shaders_uniforms/Main.cc +++ b/examples/custom_shaders_uniforms/Main.cc @@ -167,11 +167,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/depth_camera/Main.cc b/examples/depth_camera/Main.cc index ffaf64f8c..ff90e5f87 100644 --- a/examples/depth_camera/Main.cc +++ b/examples/depth_camera/Main.cc @@ -154,11 +154,7 @@ int main(int _argc, char** _argv) engineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/heightmap/Main.cc b/examples/heightmap/Main.cc index 9fff45d43..82db73326 100644 --- a/examples/heightmap/Main.cc +++ b/examples/heightmap/Main.cc @@ -324,11 +324,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2 && buildDemScene != 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/lidar_visual/Main.cc b/examples/lidar_visual/Main.cc index 868d9776b..af5aebeb7 100644 --- a/examples/lidar_visual/Main.cc +++ b/examples/lidar_visual/Main.cc @@ -272,11 +272,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/mesh_viewer/Main.cc b/examples/mesh_viewer/Main.cc index 311ccee93..a0c32a156 100644 --- a/examples/mesh_viewer/Main.cc +++ b/examples/mesh_viewer/Main.cc @@ -142,11 +142,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/mouse_picking/Main.cc b/examples/mouse_picking/Main.cc index 0e62cd2d0..d94bc4d1e 100644 --- a/examples/mouse_picking/Main.cc +++ b/examples/mouse_picking/Main.cc @@ -135,11 +135,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/ogre2_demo/Main.cc b/examples/ogre2_demo/Main.cc index 8d3183d3a..999b00252 100644 --- a/examples/ogre2_demo/Main.cc +++ b/examples/ogre2_demo/Main.cc @@ -317,11 +317,7 @@ int main(int _argc, char** _argv) std::vector engineNames; std::vector cameras; -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/particles_demo/Main.cc b/examples/particles_demo/Main.cc index a35da5845..9ed66c568 100644 --- a/examples/particles_demo/Main.cc +++ b/examples/particles_demo/Main.cc @@ -168,11 +168,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/projector/Main.cc b/examples/projector/Main.cc index 19b7fba85..f78224b16 100644 --- a/examples/projector/Main.cc +++ b/examples/projector/Main.cc @@ -180,11 +180,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/render_pass/Main.cc b/examples/render_pass/Main.cc index 6001add7c..21863d807 100644 --- a/examples/render_pass/Main.cc +++ b/examples/render_pass/Main.cc @@ -198,11 +198,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/segmentation_camera/Main.cc b/examples/segmentation_camera/Main.cc index 1a580732f..0dda4ecd7 100644 --- a/examples/segmentation_camera/Main.cc +++ b/examples/segmentation_camera/Main.cc @@ -150,11 +150,7 @@ int main(int _argc, char** _argv) engineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/simple_demo/Main.cc b/examples/simple_demo/Main.cc index ef9c8030d..1ea6e0f67 100644 --- a/examples/simple_demo/Main.cc +++ b/examples/simple_demo/Main.cc @@ -218,11 +218,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/thermal_camera/Main.cc b/examples/thermal_camera/Main.cc index eb37088cb..68157a0c9 100644 --- a/examples/thermal_camera/Main.cc +++ b/examples/thermal_camera/Main.cc @@ -138,11 +138,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/transform_control/Main.cc b/examples/transform_control/Main.cc index d0feef3aa..22dec4d3b 100644 --- a/examples/transform_control/Main.cc +++ b/examples/transform_control/Main.cc @@ -121,11 +121,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/view_control/Main.cc b/examples/view_control/Main.cc index 25fd38944..5d12fc365 100644 --- a/examples/view_control/Main.cc +++ b/examples/view_control/Main.cc @@ -167,11 +167,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/visualization_demo/Main.cc b/examples/visualization_demo/Main.cc index 04ce442f1..104ef4250 100644 --- a/examples/visualization_demo/Main.cc +++ b/examples/visualization_demo/Main.cc @@ -248,11 +248,7 @@ int main(int _argc, char** _argv) engine = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/waves/Main.cc b/examples/waves/Main.cc index b273e59fb..44889751e 100644 --- a/examples/waves/Main.cc +++ b/examples/waves/Main.cc @@ -164,11 +164,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/examples/wide_angle_camera/Main.cc b/examples/wide_angle_camera/Main.cc index d200246b5..63d6d7073 100644 --- a/examples/wide_angle_camera/Main.cc +++ b/examples/wide_angle_camera/Main.cc @@ -169,11 +169,7 @@ int main(int _argc, char** _argv) ogreEngineName = _argv[1]; } -#ifdef __APPLE__ - GraphicsAPI graphicsApi = GraphicsAPI::METAL; -#else - GraphicsAPI graphicsApi = GraphicsAPI::OPENGL; -#endif + GraphicsAPI graphicsApi = defaultGraphicsAPI(); if (_argc > 2) { graphicsApi = GraphicsAPIUtils::Set(std::string(_argv[2])); diff --git a/include/gz/rendering/Utils.hh b/include/gz/rendering/Utils.hh index 4d53fe2c9..65a50b820 100644 --- a/include/gz/rendering/Utils.hh +++ b/include/gz/rendering/Utils.hh @@ -29,6 +29,7 @@ #include "gz/rendering/Camera.hh" #include "gz/rendering/config.hh" #include "gz/rendering/Export.hh" +#include "gz/rendering/GraphicsAPI.hh" #include "gz/rendering/RayQuery.hh" #include "gz/rendering/Image.hh" @@ -120,6 +121,12 @@ namespace gz /// \return Image in bayer format GZ_RENDERING_VISIBLE Image convertRGBToBayer(const Image &_image, PixelFormat _bayerFormat); + + /// \brief Convenience function to get the default graphics API based on + /// current platform + /// \return Graphics API, i.e. METAL, OPENGL, VULKAN + GZ_RENDERING_VISIBLE + GraphicsAPI defaultGraphicsAPI(); } } } diff --git a/src/Utils.cc b/src/Utils.cc index f6ddcf396..a5ff03ea8 100644 --- a/src/Utils.cc +++ b/src/Utils.cc @@ -25,8 +25,9 @@ #include "gz/math/Vector3.hh" #include "gz/rendering/Camera.hh" -#include "gz/rendering/RayQuery.hh" +#include "gz/rendering/GraphicsAPI.hh" #include "gz/rendering/PixelFormat.hh" +#include "gz/rendering/RayQuery.hh" #include "gz/rendering/Utils.hh" @@ -393,6 +394,16 @@ Image convertRGBToBayer(const Image &_image, PixelFormat _bayerFormat) return destImage; } +///////////////////////////////////////////////// +GraphicsAPI defaultGraphicsAPI() +{ +#ifdef __APPLE__ + return GraphicsAPI::METAL; +#else + return GraphicsAPI::OPENGL; +#endif +} + } } }