diff --git a/MobileGL/Config.h b/MobileGL/Config.h index f887f3ee..1c82addd 100644 --- a/MobileGL/Config.h +++ b/MobileGL/Config.h @@ -8,7 +8,7 @@ namespace MobileGL { inline const String CoreName = "MobileGL Core"; inline const String CoreVendor = "MobileGL-Dev"; inline const Version CoreVersion = {1, 0, 0, "-Dev"}; - extern RendererInfo* RendererInfoPtr; + extern UniquePtr RendererInfoPtr; namespace Backend { #define MOBILEGL_BACKEND MOBILEGL_BACKEND_TYPE_DIRECT_GLES diff --git a/MobileGL/MG_Backend/Backends.h b/MobileGL/MG_Backend/Backends.h index a6ed6eb0..5b81ec53 100644 --- a/MobileGL/MG_Backend/Backends.h +++ b/MobileGL/MG_Backend/Backends.h @@ -1,5 +1,4 @@ #pragma once - #include #include diff --git a/MobileGL/MG_Backend/Init.cpp b/MobileGL/MG_Backend/Init.cpp index b11afb35..e96e05f8 100644 --- a/MobileGL/MG_Backend/Init.cpp +++ b/MobileGL/MG_Backend/Init.cpp @@ -1,33 +1,15 @@ #include "Backends.h" +#include "MG_Util/Types.h" #include #include #include namespace MobileGL { namespace MG_Config { - // TODO: tidy this mess up - RendererInfo* RendererInfoPtr = -#if MOBILEGL_BACKEND == MOBILEGL_BACKEND_DILIGENT - switch (MG_Config::Backend::Diligent::SpecificBackend) { - case MG_Backend::Diligent::SpecificBackendType::Vulkan: - MG_Config::RendererInfoPtr = &MG_Backend::Diligent::RendererInfoVulkan; - break; - case MG_Backend::Diligent::SpecificBackendType::Metal: - MG_Config::RendererInfoPtr = &MG_Backend::Diligent::RendererInfoMetal; - break; - default: - throw RuntimeError("Unsupported renderer type"); - } -#elif MOBILEGL_BACKEND == MOBILEGL_BACKEND_TYPE_DIRECT_GLES - &MG_Backend::DirectGLES::RendererInfo; -#else - MG_Config::RendererInfoPtr = &RendererInfoUnknown; -#endif + UniquePtr RendererInfoPtr = nullptr; } // namespace MG_Config namespace MG_Backend { - static RendererInfo RendererInfo; - void LogBackendInfo() { if (MG_Config::RendererInfoPtr) { MGLOG_I("MobileGL Backend Info:"); @@ -67,6 +49,23 @@ namespace MobileGL { void Init() { MGLOG_D("Initializing MobileGL Backend..."); +#if MOBILEGL_BACKEND == MOBILEGL_BACKEND_DILIGENT + switch (MG_Config::Backend::Diligent::SpecificBackend) { + case MG_Backend::Diligent::SpecificBackendType::Vulkan: + MG_Config::RendererInfoPtr = MakeUnique(Diligent::RendererInfoVulkan); + break; + case MG_Backend::Diligent::SpecificBackendType::Metal: + MG_Config::RendererInfoPtr = MakeUnique(Diligent::RendererInfoMetal); + break; + default: + throw RuntimeError("Unsupported renderer type"); + } +#elif MOBILEGL_BACKEND == MOBILEGL_BACKEND_TYPE_DIRECT_GLES + MG_Config::RendererInfoPtr = MakeUnique(DirectGLES::RendererInfo); +#else + MG_Config::RendererInfoPtr = MakeUnique(Unknown::RendererInfoUnknown); +#endif + InitSpecificBackendLibs(); LogBackendInfo(); }