diff --git a/project/ToolkitBuild.xml b/project/ToolkitBuild.xml
index a54ff86c6..c6bb83515 100644
--- a/project/ToolkitBuild.xml
+++ b/project/ToolkitBuild.xml
@@ -26,6 +26,7 @@
+
diff --git a/project/src/common/ExternalInterface.cpp b/project/src/common/ExternalInterface.cpp
index 59c3d90cd..893a73e66 100644
--- a/project/src/common/ExternalInterface.cpp
+++ b/project/src/common/ExternalInterface.cpp
@@ -805,6 +805,10 @@ void nme_set_renderer(HxString inRenderer)
if (std::string(inRenderer.c_str())=="opengl")
nmeEglMode = false;
#endif
+ #ifdef NME_SDL3
+ extern std::string nmeRenderer;
+ nmeRenderer = inRenderer.c_str();
+ #endif
}
DEFINE_PRIME1v(nme_set_renderer);
diff --git a/project/src/sdl2/SDL2Stage.cpp b/project/src/sdl2/SDL2Stage.cpp
index 7c7436f36..942030273 100644
--- a/project/src/sdl2/SDL2Stage.cpp
+++ b/project/src/sdl2/SDL2Stage.cpp
@@ -50,6 +50,9 @@ SDL_Surface *SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth
}
typedef float MousePosType;
+
+std::string nmeRenderer;
+
#else
typedef int MousePosType;
#endif
@@ -2258,6 +2261,18 @@ void CreateMainFrame(FrameCreationCallback inOnFrame, int inWidth, int inHeight,
#if defined(NME_OGL) && defined(NME_METAL)
nmeOpenglRenderer = !(inFlags & wfHardwareMetal);
bool hw = (inFlags & wfHardware) != 0;
+ #ifdef NME_SDL3
+ if (nmeRenderer=="opengl")
+ {
+ hw = true;
+ nmeOpenglRenderer = true;
+ }
+ else if (nmeRenderer=="metal")
+ {
+ hw = true;
+ nmeOpenglRenderer = false;
+ }
+ #endif
bool opengl = hw && nmeOpenglRenderer;
bool metal = hw && !nmeOpenglRenderer;
#elif defined(NME_OGL)
diff --git a/project/toolkit/sdl/files.xml b/project/toolkit/sdl/files.xml
index 2116e5780..a3fa8b5e9 100644
--- a/project/toolkit/sdl/files.xml
+++ b/project/toolkit/sdl/files.xml
@@ -16,89 +16,7 @@
+ -->