吐槽下 Mac 这个 HiDPI 高分屏缩放

2022-07-23 10:30:24 +08:00
 yzbythesea

最近入手了一块 LG 28mq780 ,28 寸分辨率 2560 x 2880 ,并不是标准意义上的 4K 屏,但是 DPI 接近 140 (和 32 寸 4K 一个级别)。结果 Mac 根本不支持高分屏缩放,只有降分辨率的选项。

这块屏插在 Windows 上是完美缩放,Linux 下 KDE 也是完美分数缩放( 150%)。

横向一对比,Mac 这高分屏缩放确实挺垃圾的。

13799 次点击
所在节点    Apple
122 条回复
haiironezumi
2022-07-24 14:38:29 +08:00
@lengjian 要是真的只支持原生 2x 缩放,那 MacBook Air 分辨率就不会是 2560x1600 而是 2880x1800, 包括新 MacBook Air (加了个刘海但是横向分辨率不变,也不是正常的 2x 缩放)。事实上,苹果是觉得你需要缩放就缩放,不需要缩放你就忍着……
Granthese
2022-07-24 16:36:29 +08:00
一个屏幕的 ppi 和某个尺寸的 4k 屏相当,所以 4k 屏上能用的功能也该都能用吗?那么 OP 的屏幕 ppi 和 16 寸 1920x1080 相当,我说这种屏幕不需要 hidpi ,OP 能接受吗?
yzbythesea
2022-07-24 17:17:22 +08:00
@Granthese 不缩放你看得清字? 16 寸 1080p 你试下。我觉得自己极限就是 27 1440p 这个密度。
yzbythesea
2022-07-24 17:20:15 +08:00
@haiironezumi 是的,目前 mac 应该都是默认 150% 缩放,13 寸 retina 很早就支持 1440x900 了,而它的原始分辨率是 2560x1600
Granthese
2022-07-24 17:28:38 +08:00
@yzbythesea HP 暗影精灵 8 就是这个分辨率有什么问题吗?你看不清不买就行了。同样,如果异形屏的缺乏支持让你觉得 macOS 的其他方面不值一提,你也可以换用兼容性极佳的 Windows 嘛
Granthese
2022-07-24 17:37:25 +08:00
说到 1080p 需不需要 hidpi ,刚好隔壁帖子就在说 https://www.v2ex.com/t/868321

引用 4 楼的话:“1080P 还要上 HIDPI ? 960x540 这还能显示多少内容啊?”

P.S. iPhone 4 的分辨率为 960×640 ,尺寸为 3.5 英寸
haiironezumi
2022-07-24 17:39:15 +08:00
@yzbythesea 1440 * 1.5 = 2160 ,况且 MacBook/Mac 任何情况下都没使用过 150%缩放比,14/16 寸 MacBook Pro 专门提升了一点分辨率,让默认缩放比是 200%
yzbythesea
2022-07-24 18:05:31 +08:00
@Granthese 对我有问题,怎么了?有的共情能力不?我喜欢这个 LG 屏,也用 Mac ,不能吐槽下,滑稽
yzbythesea
2022-07-24 18:09:04 +08:00
@Granthese 我这个屏 Win 和 Linux 都是缩放到 1920x2016 ,和 1080p 2 倍缩放有什么关系?还能显示多少内容?能先读下题吗?只是单纯找存在感?
seanzxx
2022-07-24 18:22:43 +08:00
站在码农的角度说一下,macOS 的缩放和 Windows 的缩放根本不是一个级别的东西,Linux 不了解不作评论。
macOS:
1. 使用 Point 表示屏幕坐标和长宽,可以用浮点值,和物理像素不对应;
2. Windows Server 自动处理 Point 到 物理像素的对应关系,然后绘制到屏幕上;
3. 不同的 DPI 之间的切换是自动的,比如一个窗口从 MacBook 移动到外接的 1080p 显示器上,系统会根据新的 DPI 重新绘制窗口。
macOS 的程序其实不用关心具体 DPI 和分辨率,一切都是系统自己完成,包括:
* 系统控件可以自动完成任意分辨率下面的适配;
* 绘图 API 自动完成高分辨率的适配,还能自动利用更多的像素优化显示的内容;
* 图片相关的 API 可以自动根据 DPI 读取不同分辨率的图片,在高分辨率下显示更清楚的图片;
所以当年 iPhone 4 和 Retina Macbook 发布以后,旧的应用几乎不修改直接运行,在高分屏显示更好清晰的效果。


Windows:
1. 使用 Pixel 表示屏幕大小和长宽,整数值,和物理像素对应;
2. Windows 为了支持高分屏,加入了屏幕缩放 和 DPI 感知 (DPI Awareness),用户可以设置屏幕放大倍数,DPI 感知是指应用程序如何处理这个放大倍数,有以下几个值 /级别可以选择:
* Unware:所有的旧应用,系统直接按倍数拉伸应用窗口,代价是显示模糊;
* System:Vista 开始支持,应用程序按系统主显示器设置的倍数绘制窗口,单一显示器工作正常,多显示器如果 DPI 不一样会拉伸产生模糊
* Per Monitor:Windows 8.1 开始支持,系统会通知应用程序不同显示器的放大倍数,应用程序就按照新的 DPI 重绘窗口,避免了拉伸的模糊,但不支持子窗口;
* Per Monitor V2: Windows 10 开始支持,就是多了子窗口的支持;
看起来到了 Windows 10 就和 macOS 差不多了,其实噩梦才刚刚开始,因为你的 UI 库不支持呀。
原生的 Win32 控件,.net 的 WinForms 控件 和 WPF 控件,GDI 和 GDI+ ,都需要你修改布局代码适配,比如在 1 倍的时候,一个按钮长度 20 像素,在 1.5 倍的时候,你要通过计算得出现在这个按钮应该显示 30 像素,所有显示相关的代码全部都要改。
这个过程太麻烦,连微软自己的都软件都适配不好,国内常用的软件比如 QQ ,百度网盘都是 System 级别,也就是单一显示器没问题,但多显示器就显示模糊了。
微软也提供了一站式解决方案 UWP ,结果大家也都知道,挣扎了好久没人用放弃了。
微软又搞出了 Windows App SDK ,有了 UWP 的先例都不敢用了。

总结一下,macOS 提供了对高分辨率的完整支持,Windows 把对高分辨率的适配工作交给了开发者。
seanzxx
2022-07-24 18:34:19 +08:00
好奇这个 2k 的显示器,去找了下参数
IPS 屏幕
1000:1 对比度
300 尼特 亮度
60Hz 刷新率

谁能说说这玩意的卖点是什么? 2K 显示器我记得都是为了高刷玩游戏呀,这显示器没有高刷,亮度这么低,支持 HDR 也没有意义呀
yzbythesea
2022-07-24 18:37:49 +08:00
@seanzxx 主要是 form factor ,16:18 ,相当于一个方屏,很适合写代码
ShadowPower
2022-07-24 19:11:11 +08:00
@seanzxx
然而 macOS 的 1 Point 能表示的物理像素个数只能是整数倍,例如 1 Point = 1 Pixel / 2 Pixel / 3 Pixel
这就导致了楼主目前的问题……
pangshu8703
2022-07-24 19:32:29 +08:00
反正是跟着 lz 骂苹果就好了,不用解释其他的
Granthese
2022-07-24 21:19:59 +08:00
@yzbythesea 我一开始只是举例说明 OP 拿 ppi 相近认定功能必然兼容的逻辑是有问题的,OP 问“不缩放你看得清字? 16 寸 1080p 你试下。同时举出另一帖子的讨论内容补充前述的“1080p 不需要 hidpi”的论点。不知道 OP 是否具有基本的上下文阅读能力?
icestraw
2022-07-24 21:44:25 +08:00
@seanzxx 感觉 Windows 最要命的是,当接了多个不同 DPI 的显示屏的时候,窗口跨屏幕的显示效果几乎不能看。Windows 完全可以取当前连接的显示器最高的 DPI 缩放渲染窗口,然后在跨窗口的时候缩放对应比例就完事了,但是它偏不!只要窗口跨屏幕,另一边都会变得特别巨大 /小,然后鼠标经过分界线时整个窗口还要因为改 DPI 闪一下,难看的要死。

但是 macOS 的逻辑使得它能完美兼容低清 /高清屏幕的切换,非常的优雅(但是兼容性差还是得喷),macOS 跨高 /低 DPI 显示器时窗口的一边不会变的异常的大 /小,只会将窗口的渲染模式从 1x 和 2x 切换,对用户几乎是无感的。

所以我现在在 Windows 干脆就用 mac 的模式,把每个屏的 DPI 缩放都调到同一个值,然后修改物理分辨率( Windows 应该叫“超虚拟分辨率”),缺点就是如果有一个 1080p 和一个 4k ,1080p 也得虚拟到 4k ,会加重显卡的负担。整体效果和 mac 几乎相同。
sean419
2022-07-24 21:55:04 +08:00
这边建议弃用 Mac
huijiewei
2022-07-24 23:12:10 +08:00
macOS 为了开发简单,适配简单,所以缩放限制的很死。不是标准缩放自己去难受,简单的说就是用非推荐屏幕恶心自己

。。不像 Windows 即恶心用户也恶心开发者。
yzbythesea
2022-07-25 03:43:11 +08:00
@Granthese 我从来没有这个逻辑,我的槽点是从用户角度出发,这么小的字,Win 和 Linux 都支持,Mac 明显在这个方面没把用户当回儿事。你理解能力太差,还喜欢先入为主。
petercui
2022-07-25 06:58:01 +08:00
@yzbythesea 支持的代价就是开一个软件显示的效果跟另一个软件显示的效果完全不一致。有的地方字大,有的地方字小完全匹配不了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/868153

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX