From 44a434604a19c264083f814b0f06bb9aa03ecaa5 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Wed, 5 Jan 2022 20:52:17 -0400 Subject: [PATCH] t.renderers/excluderenderers doesn't affect renderer order. --- src/modules/graphics/Graphics.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/modules/graphics/Graphics.cpp b/src/modules/graphics/Graphics.cpp index 70f0d5a2b..3a1845228 100644 --- a/src/modules/graphics/Graphics.cpp +++ b/src/modules/graphics/Graphics.cpp @@ -110,6 +110,11 @@ namespace opengl { extern love::graphics::Graphics *createInstance(); } namespace metal { extern love::graphics::Graphics *createInstance(); } #endif +static const Renderer rendererOrder[] = { + RENDERER_METAL, + RENDERER_OPENGL, +}; + static std::vector defaultRenderers = { RENDERER_METAL, @@ -141,12 +146,15 @@ Graphics *Graphics::createInstance() instance->retain(); else { - for (auto renderer : _renderers) + for (auto r : rendererOrder) { - if (renderer == RENDERER_OPENGL) + if (std::find(_renderers.begin(), _renderers.end(), r) == _renderers.end()) + continue; + + if (r == RENDERER_OPENGL) instance = opengl::createInstance(); #if defined(LOVE_MACOS) || defined(LOVE_IOS) - if (renderer == RENDERER_METAL) + if (r == RENDERER_METAL) instance = metal::createInstance(); #endif