From c7b0d103e1744c2bbc69fddd7ca3f4ac8eb9feb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 1 Sep 2020 19:28:10 +0200 Subject: [PATCH] OpenGLRenderer: remove opengl32 dependency on Linux --- include/Nazara/OpenGLRenderer/OpenGLRenderer.hpp | 1 - .../Nazara/OpenGLRenderer/Wrapper/EGL/EGLLoader.hpp | 3 +-- .../Nazara/OpenGLRenderer/Wrapper/WGL/WGLLoader.hpp | 4 ++-- src/Nazara/OpenGLRenderer/OpenGLRenderer.cpp | 10 ++-------- src/Nazara/OpenGLRenderer/Wrapper/EGL/EGLLoader.cpp | 2 +- src/Nazara/OpenGLRenderer/Wrapper/WGL/WGLLoader.cpp | 6 ++++-- src/Nazara/Renderer/Renderer.cpp | 2 +- 7 files changed, 11 insertions(+), 17 deletions(-) diff --git a/include/Nazara/OpenGLRenderer/OpenGLRenderer.hpp b/include/Nazara/OpenGLRenderer/OpenGLRenderer.hpp index 9580c8b04..281f55e60 100644 --- a/include/Nazara/OpenGLRenderer/OpenGLRenderer.hpp +++ b/include/Nazara/OpenGLRenderer/OpenGLRenderer.hpp @@ -8,7 +8,6 @@ #define NAZARA_OPENGLRENDERER_HPP #include -#include #include #include #include diff --git a/include/Nazara/OpenGLRenderer/Wrapper/EGL/EGLLoader.hpp b/include/Nazara/OpenGLRenderer/Wrapper/EGL/EGLLoader.hpp index 45fece72b..b33ab32be 100644 --- a/include/Nazara/OpenGLRenderer/Wrapper/EGL/EGLLoader.hpp +++ b/include/Nazara/OpenGLRenderer/Wrapper/EGL/EGLLoader.hpp @@ -8,7 +8,6 @@ #define NAZARA_OPENGLRENDERER_EGLLOADER_HPP #include -#include #include #include #include @@ -20,7 +19,7 @@ namespace Nz::GL class NAZARA_OPENGLRENDERER_API EGLLoader : public Loader { public: - EGLLoader(DynLib& openglLib); + EGLLoader(); ~EGLLoader() = default; std::unique_ptr CreateContext(const OpenGLDevice* device, const ContextParams& params, Context* shareContext) const override; diff --git a/include/Nazara/OpenGLRenderer/Wrapper/WGL/WGLLoader.hpp b/include/Nazara/OpenGLRenderer/Wrapper/WGL/WGLLoader.hpp index d3481ea00..01680f760 100644 --- a/include/Nazara/OpenGLRenderer/Wrapper/WGL/WGLLoader.hpp +++ b/include/Nazara/OpenGLRenderer/Wrapper/WGL/WGLLoader.hpp @@ -22,7 +22,7 @@ namespace Nz::GL class NAZARA_OPENGLRENDERER_API WGLLoader : public Loader { public: - WGLLoader(DynLib& openglLib); + WGLLoader(); ~WGLLoader() = default; std::unique_ptr CreateContext(const OpenGLDevice* device, const ContextParams& params, Context* shareContext) const override; @@ -43,7 +43,7 @@ namespace Nz::GL private: DynLib m_gdi32Lib; - DynLib& m_opengl32Lib; + DynLib m_opengl32Lib; WGLContext m_baseContext; }; } diff --git a/src/Nazara/OpenGLRenderer/OpenGLRenderer.cpp b/src/Nazara/OpenGLRenderer/OpenGLRenderer.cpp index 4e743d11e..3334b82a6 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLRenderer.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLRenderer.cpp @@ -48,12 +48,6 @@ namespace Nz bool OpenGLRenderer::Prepare(const ParameterList& parameters) { - if (!m_opengl32Lib.Load("opengl32" NAZARA_DYNLIB_EXTENSION)) - { - NazaraError("Failed to load opengl32 library, is OpenGL installed on your system?"); - return false; - } - std::unique_ptr loader = SelectLoader(); if (!loader) { @@ -73,7 +67,7 @@ namespace Nz #if defined(NAZARA_PLATFORM_WINDOWS) || defined(NAZARA_PLATFORM_LINUX) try { - return std::make_unique(m_opengl32Lib); + return std::make_unique(); } catch (const std::exception& e) { @@ -84,7 +78,7 @@ namespace Nz #ifdef NAZARA_PLATFORM_WINDOWS try { - return std::make_unique(m_opengl32Lib); + return std::make_unique(); } catch (const std::exception& e) { diff --git a/src/Nazara/OpenGLRenderer/Wrapper/EGL/EGLLoader.cpp b/src/Nazara/OpenGLRenderer/Wrapper/EGL/EGLLoader.cpp index 96627433f..a87d7fadf 100644 --- a/src/Nazara/OpenGLRenderer/Wrapper/EGL/EGLLoader.cpp +++ b/src/Nazara/OpenGLRenderer/Wrapper/EGL/EGLLoader.cpp @@ -19,7 +19,7 @@ namespace Nz::GL { - EGLLoader::EGLLoader(DynLib& /*openglLib*/) + EGLLoader::EGLLoader() { if (!m_eglLib.Load("libEGL")) throw std::runtime_error("failed to load gdi32.dll: " + m_eglLib.GetLastError()); diff --git a/src/Nazara/OpenGLRenderer/Wrapper/WGL/WGLLoader.cpp b/src/Nazara/OpenGLRenderer/Wrapper/WGL/WGLLoader.cpp index eb7534e4e..b3145ef87 100644 --- a/src/Nazara/OpenGLRenderer/Wrapper/WGL/WGLLoader.cpp +++ b/src/Nazara/OpenGLRenderer/Wrapper/WGL/WGLLoader.cpp @@ -9,10 +9,12 @@ namespace Nz::GL { - WGLLoader::WGLLoader(DynLib& openglLib) : - m_opengl32Lib(openglLib), + WGLLoader::WGLLoader() : m_baseContext(nullptr, *this) { + if (!m_opengl32Lib.Load("opengl32" NAZARA_DYNLIB_EXTENSION)) + throw std::runtime_error("Failed to load opengl32 library, is OpenGL installed on your system?"); + if (!m_gdi32Lib.Load("gdi32.dll")) throw std::runtime_error("failed to load gdi32.dll: " + m_gdi32Lib.GetLastError()); diff --git a/src/Nazara/Renderer/Renderer.cpp b/src/Nazara/Renderer/Renderer.cpp index f7d77cc9a..2b4fa6eab 100644 --- a/src/Nazara/Renderer/Renderer.cpp +++ b/src/Nazara/Renderer/Renderer.cpp @@ -75,7 +75,7 @@ namespace Nz }; RegisterImpl(NazaraRendererPrefix "NazaraOpenGLRenderer" NazaraRendererDebugSuffix, [] { return 50; }); - RegisterImpl(NazaraRendererPrefix "NazaraVulkanRenderer" NazaraRendererDebugSuffix, [] { return 100; }); + //RegisterImpl(NazaraRendererPrefix "NazaraVulkanRenderer" NazaraRendererDebugSuffix, [] { return 100; }); std::sort(implementations.begin(), implementations.end(), [](const auto& lhs, const auto& rhs) { return lhs.score > rhs.score; });