diff options
Diffstat (limited to 'platform/macos/display_server_macos.mm')
| -rw-r--r-- | platform/macos/display_server_macos.mm | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/platform/macos/display_server_macos.mm b/platform/macos/display_server_macos.mm index 53db9a5abf..09df60bf06 100644 --- a/platform/macos/display_server_macos.mm +++ b/platform/macos/display_server_macos.mm @@ -4499,6 +4499,22 @@ DisplayServerMacOS::DisplayServerMacOS(const String &p_rendering_driver, WindowM rendering_driver = p_rendering_driver; #if defined(GLES3_ENABLED) + if (rendering_driver == "opengl3_angle") { + gl_manager_angle = memnew(GLManagerANGLE_MacOS); + if (gl_manager_angle->initialize() != OK) { + memdelete(gl_manager_angle); + gl_manager_angle = nullptr; + bool fallback = GLOBAL_GET("rendering/gl_compatibility/fallback_to_native"); + if (fallback) { + WARN_PRINT("Your video card drivers seem not to support the required Metal version, switching to native OpenGL."); + rendering_driver = "opengl3"; + } else { + ERR_FAIL_MSG("Could not initialize OpenGL."); + return; + } + } + } + if (rendering_driver == "opengl3") { gl_manager_legacy = memnew(GLManagerLegacy_MacOS); if (gl_manager_legacy->initialize() != OK) { @@ -4509,15 +4525,6 @@ DisplayServerMacOS::DisplayServerMacOS(const String &p_rendering_driver, WindowM return; } } - if (rendering_driver == "opengl3_angle") { - gl_manager_angle = memnew(GLManagerANGLE_MacOS); - if (gl_manager_angle->initialize() != OK) { - memdelete(gl_manager_angle); - gl_manager_angle = nullptr; - r_error = ERR_UNAVAILABLE; - ERR_FAIL_MSG("Could not initialize OpenGL."); - } - } #endif #if defined(VULKAN_ENABLED) if (rendering_driver == "vulkan") { |
