diff --git a/OpenRA.Game/Settings.cs b/OpenRA.Game/Settings.cs index 50923b1193..464e7f2d3c 100644 --- a/OpenRA.Game/Settings.cs +++ b/OpenRA.Game/Settings.cs @@ -118,6 +118,9 @@ namespace OpenRA [Desc("At which frames per second to cap the framerate.")] public int MaxFramerate = 60; + [Desc("Disable high resolution DPI scaling on Windows operating systems.")] + public bool DisableWindowsDPIScaling = false; + public int BatchSize = 8192; public int SheetSize = 2048; diff --git a/OpenRA.Platforms.Default/Sdl2GraphicsDevice.cs b/OpenRA.Platforms.Default/Sdl2GraphicsDevice.cs index 01466c0c79..7f88207343 100644 --- a/OpenRA.Platforms.Default/Sdl2GraphicsDevice.cs +++ b/OpenRA.Platforms.Default/Sdl2GraphicsDevice.cs @@ -40,7 +40,7 @@ namespace OpenRA.Platforms.Default WindowSize = windowSize; // Disable legacy scaling on Windows - if (Platform.CurrentPlatform == PlatformType.Windows) + if (Platform.CurrentPlatform == PlatformType.Windows && !Game.Settings.Graphics.DisableWindowsDPIScaling) SetProcessDPIAware(); SDL.SDL_Init(SDL.SDL_INIT_NOPARACHUTE | SDL.SDL_INIT_VIDEO); @@ -82,7 +82,7 @@ namespace OpenRA.Platforms.Default else if (Platform.CurrentPlatform == PlatformType.Windows) { float ddpi, hdpi, vdpi; - if (SDL.SDL_GetDisplayDPI(0, out ddpi, out hdpi, out vdpi) == 0) + if (!Game.Settings.Graphics.DisableWindowsDPIScaling && SDL.SDL_GetDisplayDPI(0, out ddpi, out hdpi, out vdpi) == 0) { WindowScale = ddpi / 96; WindowSize = new Size((int)(SurfaceSize.Width / WindowScale), (int)(SurfaceSize.Height / WindowScale));