我正在尝试获取当前屏幕的显示缩放设置,以便我可以在我的 OpenGL 和/或 Vulkan 窗口内正确缩放以匹配操作系统的设置。文档说要使用
float dpi = [window backingScaleFactor];
但是,这将返回 1.0f 根本没有缩放,而 2.0f 用于一些缩放。
float dpi = [[window screen] backingScaleFactor];
做同样的事情。
NSRect resolution = [[window screen] frame];
将为您提供当前屏幕的虚拟分辨率。在系统偏好设置 -> 显示 -> 缩放中,这是“看起来像”值。对于我拥有的 3840x2160 屏幕,可能的值为 1920x1080、2560x1440、3008x1692、3360x1890、3830x2160,具体取决于您选择的 Scaled 设置。在我的 MBP 的内置屏幕上,其原始分辨率为 2880x1440,“看起来像”值可以是 1024x640、1280x800、1440x900、1680x1050、1920x1200。文档说要使用
NSRect test = {0, 0, 1000, 1000};
NSRect dpi = [NSView convertRectToBacking:test];
NSRect
然而,这只是乘以backingScaleFactor
.
这是有人试图获得屏幕的真实分辨率。
所以,我想要backingScaleFactor
给定的真实屏幕分辨率或本机屏幕分辨率NSScreen
。有任何想法吗?