|
@@ -4647,6 +4647,12 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win
|
|
// Init context and rendering device
|
|
// Init context and rendering device
|
|
#if defined(GLES3_ENABLED)
|
|
#if defined(GLES3_ENABLED)
|
|
|
|
|
|
|
|
+#if defined(__arm__) || defined(__aarch64__) || defined(_M_ARM) || defined(_M_ARM64)
|
|
|
|
+ // There's no native OpenGL drivers on Windows for ARM, switch to ANGLE over DX.
|
|
|
|
+ if (rendering_driver == "opengl3") {
|
|
|
|
+ rendering_driver = "opengl3_angle";
|
|
|
|
+ }
|
|
|
|
+#else
|
|
bool fallback = GLOBAL_GET("rendering/gl_compatibility/fallback_to_angle");
|
|
bool fallback = GLOBAL_GET("rendering/gl_compatibility/fallback_to_angle");
|
|
if (fallback && (rendering_driver == "opengl3")) {
|
|
if (fallback && (rendering_driver == "opengl3")) {
|
|
Dictionary gl_info = detect_wgl();
|
|
Dictionary gl_info = detect_wgl();
|
|
@@ -4667,6 +4673,7 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win
|
|
rendering_driver = "opengl3_angle";
|
|
rendering_driver = "opengl3_angle";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+#endif
|
|
|
|
|
|
if (rendering_driver == "opengl3") {
|
|
if (rendering_driver == "opengl3") {
|
|
gl_manager_native = memnew(GLManagerNative_Windows);
|
|
gl_manager_native = memnew(GLManagerNative_Windows);
|