对 macOS / Windows HiDPI 高分屏处理有感 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
icestraw
V2EX    macOS

对 macOS / Windows HiDPI 高分屏处理有感

  •  1
     
  •   icestraw 2022-07-24 23:07:11 +08:00 7161 次点击
    这是一个创建于 1180 天前的主题,其中的信息可能已经有所发展或是发生改变。
    看到 https://v2ex.com/t/868153 有感

    macOS 的 HiDPI 对不同屏幕兼容性差,猜想是因为它的实现原理决定的。

    由于 macOS 对高分屏的做法是固定 double 屏幕分辨率,渲染出逻辑尺寸只有一半的界面,但是在很多低 PPI (低于 180 )的屏幕上,这个逻辑会使得界面变得过分的大,因此 macOS 采用了“虚分辨率”的渲染方式:即增加显卡实际渲染的分辨率,渲染在屏幕上,起到同时“增加屏幕空间”和“利用高分屏”的目的。不止 macOS ,iOS 也用到了这种逻辑,比如 iPhone 6 Plus 的物理分辨率为 1920x1080 ,但是渲染分辨率为 2208x1242 ,逻辑分辨率是 736x414@3x
    这种渲染的坏处和好处都很明显,坏在带来了额外的性能损失,好在根本不需要考虑 App 的兼容性,App 不需要做任何适配工作就能完美支持。

    一块 4k 的屏幕,渲染 1080p 的逻辑分辨率,显卡只需要渲染 4k
    但是同样 4k 屏,渲染 1440p 的逻辑分辨率,显卡需要渲染 5k 。此时仍然能利用高分屏的优势,并且屏幕字体没那么大。观感上就比较舒适,类似 Ultrafine 5k 。代价就是显卡渲染负担加重些许。

    如果苹果不限制可用的分辨率类型,那么,一台 4k 屏幕,同时实现“字体变小”和“利用高分屏”的物理极限就是 8k ( 4k@2x ),此时的状况就类似全屏开了 2 倍抗锯齿。

    但是,苹果在 2012 年引入 HiDPI 的概念时,很多显卡其实是不支持渲染物理 8k 的分辨率的,无论是驱动还是显卡性能本身都无法实现“渲染 8k”的结果。那到底通过什么去判断一台显示屏,OS 究竟允许怎样的渲染分辨率呢?如何平衡虚拟高分辨率带来的性能损失,和开启虚拟分辨率带来的观感提升,其实没有一个明确标准,需要综合考虑显卡支持程度和性能损耗。苹果的判断大体上是“DPI 接近 2x”并且“显卡支持”的分辨率。因此我认为苹果选择白名单某种程度也是一种无奈之举。

    类似 LG 28mq780 的 2560x2880 ,如果选择翻倍(实际期望值会比翻倍略小),显卡就需要渲染 5120 * 5760 的分辨率,这种超过 5k 的分辨率已经对相当一部分 MacBook ,尤其是 13 寸 intel 核显的机器,形成相当大的负担,甚至有可能直接不支持。此时 macOS 其实无法判断用户真的想默认开这种“字体大一点”,但是“性能狂掉”的高 DPI 模式的。

    综上所述,白名单似乎是一种“保全体验的无奈之举”,符合苹果“替用户做最优秀选择”的产品逻辑




    但是 Windows 上,情况就不一样了。Windows 一开始就选择了一条看似完美的方法:系统提供 DPI 缩放,由 App 适配。这样几乎没有性能损失,毕竟如果一台 27 寸 4k 分辨率的屏幕打游戏,4k 分辨率还是能有显卡能跑满的,但是如果 Windows 像 macOS 一样默认渲染了 5k ,游戏帧数直接就能掉一半还多,微软怎么想也不能让这种事发生。而且提供 DPI 缩放,也能避免 macOS 渲染高 DPI 时“字体模糊”的问题。毕竟 macOS 的 downsampling 实现无法实现点对点的显示。

    但问题就出在 App 适配上,哪有那么多 App 适配这套玩意!众多的早就不更新的 App ,每个 App 都用着不同的 UI 库,使用次新的 UWP 库的 App 国内几乎没有,WinUI 就更不可能了。指望每个 App 完美适配 Windows 的 DPI Awareness 几乎不可能。事实上现在大多数 App 甚至都只适配了整数倍缩放( 200%),如果遇到 150%那多半会 fallback 到 100%,更不要提即使适配了,使用多个不同 DPI 显示器的跨屏效果也是一个灾难。这些因素夹杂在一起,让 Windows 笔记本外接显示屏(扩展模式)几乎没有什么体验可言。指望 Windows 做好估计是不太现实。万幸 Nvidia 和 ATI 在两年前都推出了自己的“超虚拟分辨率”逻辑,得益于此,用户一番折腾还是能实现类似 macOS“HiDPI”的整数倍缩放效果了,偏好游戏性能和偏好跨屏兼容性的用户也算皆大欢喜。

    如今 Windows 的高 DPI 实现,借用乔布斯的一句名言概括:微软最大的问题是这个公司根本没有品味。Windows 这种“即使丑的无可附加也要保证你 App 正常性能运行”和 macOS“即使硬件兼容性和性能都差到不行也要保证 App 体验”的产品哲学,真是交相辉映。
    33 条回复    2022-09-26 00:26:25 +08:00
    huijiewei
        1
    huijiewei  
       2022-07-24 23:14:26 +08:00
    macOS 为了开发简单,适配简单,所以缩放限制的很死。不是标准缩放自己去难受,简单的说就是用非推荐屏幕恶心自己

    。。不像 Windows 即恶心用户也恶心开发者。

    相比我还是更喜欢 macOS, 因为加钱就能解决的问题就不是问题。
    icestraw
        2
    icestraw  
    OP
       2022-07-24 23:23:56 +08:00
    @huijiewei Windows 的恶心还有一点,在 Win10 的时候,微软做那么一大堆 DPI 和 Win32App 完全不同的 UWP App ,个个菜单奇大无比。说是为了触屏考虑,但是真有触屏硬件的时候这些菜单还会自动拉开变得更大,就怎么说呢...一言难尽,看不懂微软在干什么。
    Gonggggg
        3
    Gonggggg  
       2022-07-24 23:53:44 +08:00
    @icestraw 但是拉大以后确实是方便触控了,要不然比如 office 全家桶的 ribbon 菜单根本没法操作。不过更优雅的方式是直接限制功能继续做 office mobil 那几个 app 以及 win8 的操作逻辑,可惜被市场否定了,就只能继续键鼠嫌大触控又不是很好用的两头不讨好的策略了。
    felixcode
        4
    felixcode  
       2022-07-25 00:30:54 +08:00 via Android   7
    但 macOS 即使不用考虑 app 兼容性也没做到屏幕兼容性啊,啥都不做就是品味是吧
    Nasei     5
    Nasei  
       2022-07-25 00:48:28 +08:00
    @icestraw 一看你就没用过,触屏下哪个 uwp 的菜单会变大?变大的是桌面右键那样的菜单
    Nasei
        6
    Nasei  
       2022-07-25 00:53:20 +08:00
    windows 上不适配的 app ,基本 mac 版有都不会有,你如果要用一个 mac 上都没有的东西,那 mac 的缩放就算用了外星科技,又有什么用呢

    另外我们都知道 3.5 寸是手机的最佳尺寸,比这个尺寸大的手机都很蠢
    pocarisweat
        7
    pocarisweat  
       2022-07-25 01:32:04 +08:00
    Sorry ,还是有点没理解 Windows 的所谓「 DPI 缩放」和 macOS 的所谓「 downsampling 」两个有什么实际区别
    WOLFRAZOR
        8
    WOLFRAZOR  
       2022-07-25 01:50:43 +08:00 via Android
    除了 hidpi 问题,还有一个色彩文件问题。
    苹果在色彩文件部分字段持有专利。
    WOLFRAZOR
        9
    WOLFRAZOR  
       2022-07-25 01:51:47 +08:00 via Android
    boot camp 上面,屏幕色彩差别(其实是色温)很明显。
    yaoyaomoe
        10
    yaoyaomoe  
       2022-07-25 02:03:29 +08:00 via iPhone
    @icestraw @Nasei
    surface go 和各种寨板曾经的用户 表示变大真的对触摸好……前提是分辨率高缩放弄小……
    我当时是直接百分之百 不放大 所以变大之后触摸准确度的确提升了……
    但是问题是默认来到 150 的缩放已经够大了……
    littlewey
        11
    littlewey  
       2022-07-25 02:10:39 +08:00 via iPhone
    同意你的观察和观点
    yzbythesea
        12
    yzbythesea  
       2022-07-25 03:53:48 +08:00
    现在 Linux 也是这样了。我觉得作为用户,没必要从技术角度纠结,因为你不是做这个的,也可能不是 Apple 员工,信息量太少。但是作为用户,产品没满足你的需求,但是 Win 和 Linux 可以满足,那这个产品就有问题。而且为什么 Mac 或 Win 要分一个高下,两个在缩放下都有做得烂的地方,都需要指出。
    IslandOwnerHuang
        13
    IslandOwnerHuang  
       2022-07-25 04:13:45 +08:00
    说白了就是微软苹果的产品哲学不同,一个是重实用一个重体验。楼主最后一句话总结的实在是太到位,已感谢。
    leighton
        14
    leighton  
       2022-07-25 05:36:10 +08:00   1
    如果 downsampling 真的那么优雅,为什么起步晚那么多的 linux wayland 各桌面还是选了 windows 的路呢,其实 downsampling 在 Linux 上用 xrandr 一条命令就可以实现,在 wayland 之前大家就是这么玩的。苹果的路子看起来有点投机取巧的意思,实现起来最简单,最后苹果开心了,开发者开心了,挨打的只有用户。至于 win 下的 DPI 缩放,连张小的微信都适配了,不知道大家到底在哪儿找到的那么多不适配的上古软件
    shutongxinq
        15
    shutongxinq  
       2022-07-25 05:54:53 +08:00 via iPhone
    其实 windows 这样也挺好的,当软件经过几年阵痛期之后,就基本能根据 dpi 缩放自己的显示界面。这样毕竟是效率更高。
    shutongxinq
        16
    shutongxinq  
       2022-07-25 05:58:46 +08:00 via iPhone
    @leighton 苹果这样子做也有它自己卖硬件的缘故。他可以自己出的屏幕都按照自己 216 的 ppi 去做,这样就没有性能损失,还能鼓励用户买自己的硬件。
    RIDESU
        17
    RIDESU  
       2022-07-25 07:49:46 +08:00
    @leighton 第一次听说系统和软件优化好是苹果开心了开发者开心了挨打的只有用户,毕竟只有它的使用体验好,用户开心了苹果和开发者才会开心,用户并不会因为用上古硬件用低劣的效果保持相对流畅的体验就开心。
    aireason
        18
    aireason  
       2022-07-25 08:06:46 +08:00
    看完还有个问题,为什么在 macOS 上,2k 屏(1440*2560)无法打开 HiDPI ,需要借助第三方工具才能实现。
    leighton
        19
    leighton  
       2022-07-25 08:07:03 +08:00   3
    @RIDESU #17
    > 毕竟只有它的使用体验好,用户开心了苹果和开发者才会开心
    字体糊,像素渲染失真,还有根本无法开启 hidpi 的可能,这叫用户体验好?

    > 上古硬件用低劣的效果保持相对流畅
    原帖主的 LG 28mq780 ,我用的 Dell U4021qw ,这叫上古硬件?这比 studio display 都贵事实就是在所有非 Apple 认证的显示器上用户获得的都是劣质体验
    icestraw
        20
    icestraw  
    OP
       2022-07-25 09:28:06 +08:00 via Android
    @Gonggggg 你误会我了,我不讨厌检测到触摸屏硬件后拉大 UI ,我讨厌的是他在没有触屏硬件的时候,UWP 的 UI 仍然比那些 MFC 的大一大截,这相当于系统中有三档缩放。真适配触屏只需要考虑两档
    icestraw
        21
    icestraw  
    OP
       2022-07-25 09:39:07 +08:00 via Android
    @aireason 严格来讲其实可以的,但是只能开 720p 。换句话说,没有启用虚拟分辨率。可能苹果觉得强行渲染 4k 太耗性能,而且 2k 27 寸正好是苹果认为符合他 1x 缩放的尺寸
    icestraw
        22
    icestraw  
    OP
       2022-07-25 09:43:32 +08:00 via Android
    @aireason 根据我的体验,Windows 的微信应该只适配了 100%和 200%,150%的屏幕上是 100%缩放,我说上古(框架)软件第一个想到的就是它

    @pocarisweat macOS 就相当于 win 的减配,只有整数倍缩放,也相当于 ubuntu 不开 fractional scaling 的效果

    @Nasei 每一个,前提你得用手点
    NeoChen
        23
    NeoChen  
       2022-07-25 10:08:30 +08:00
    另外提一个点,chrome 浏览器直接 cmd+加号放大,像 windows 的缩放,但是如果直接用触控板双指拉伸,那就等比放大,不会出现因为屏幕大小原因导致网页中的组件缩放而影响页面布局
    icestraw
        24
    icestraw  
    OP
       2022-07-25 10:12:38 +08:00 via Android
    @felixcode

    其实仔细想想苹果这种事情干的不少,苹果的产品几乎每代屏幕都是特制分辨率,而且逻辑 dpi 都是统一标准。正因为这么严格,才能实现很多优雅的效果。
    比如在 macOS 上打开 pdf 的默认大小就是物理的纸张大小,这真的就非常有品味。
    相比之下,Windows 要实现就要在 Word 调到 114%这个奇怪的缩放倍率...一言难尽
    noahhhh
        25
    noahhhh  
       2022-07-25 10:31:41 +08:00 via Android
    @icestraw 微信适配了什么缩放比例,你设置调一下不就看到了吗。
    noahhhh
        26
    noahhhh  
       2022-07-25 10:37:41 +08:00 via Android
    Windows 和 Linux HiDPI 问题一是历史包袱,像 ChromeOS 和 Android 就没这些问题,二是现在还是有大量低分屏,笔记本 2K 近两年才普及,2K 显示器也是价格逐渐跌入千元才多起来
    felixcode
        27
    felixcode  
       2022-07-25 10:44:27 +08:00   1
    @icestraw
    既然这么严格,那支持什么屏幕就列出来吧,别高端显示器接上去了还被当成上古硬件。
    另外 macOS 上说 pdf ,windows 上说 Word ,一个针对打印的格式,一个针对编辑的格式,品味个啥啊
    icestraw
        28
    icestraw  
    OP
       2022-07-25 10:55:37 +08:00 via Android
    @noahhhh 外界多个屏的时候难道我不能说每移一次窗口就调一次吧,作为适配,就应该是默认可用而非调试后可用,这也是 macOS 做的好的地方。

    @felixcode macOS 上的 word 也是微软写的啊,你让我怎么说,不然我说下 edge 里的 pdf 吧
    Gonggggg
        29
    Gonggggg  
       2022-07-25 16:44:53 +08:00
    @icestraw 感觉 UI 变大是大势所趋。接受了 Windows 这种设定之前尝试同学的 MBA 反而感觉什么都太小了对眼睛不太友好 2333
    agagega
        30
    agagega  
       2022-09-25 15:06:33 +08:00
    @icestraw
    那我如果有一块 27' 4K 的屏幕,接 Windows 和 macOS 都开 1440p 的分辨率,抛开 macOS 渲染 5K 的额外开销不谈,macOS 的字体等显示效果会不会比 Windows 差呢?
    icestraw
        31
    icestraw  
    OP
       2022-09-25 16:50:35 +08:00   1
    @agagega 假定 macOS 是 1440p@2x 。

    macOS:只要是非点对点的显示都像蒙了一层磨砂一样,4k 也不例外。这种磨砂效果本身是会对观感造成影响的,而且逻辑分辨率和物理分辨率差的越小越明显,4k 和 5k 屏在 macOS 上观感差距非常大。很多人在 macOS 接 27 寸 4k 屏的时候都会调整到 1080p@2x 使用,这也是 macOS 默认的挡位,显示会很清晰。我之前也问过几个这个组合( 27 4k )的用户,比较统一的反馈是”感觉调到 2k 的时候字太小看不清楚“。大家宁愿调 1080p@2x 然后坐远一点。

    Windows:接 4k 屏第一时间几乎感觉不出来 4k 和 5k 的区别。显示缩放会自动调整到 175%或者 150%,此时也不会有磨砂的感觉,字体和 UI 都非常锐利。4k 和 5k 的区别只有两个屏幕并排的时候才能看出来。接入 5k 屏时,显示缩放会自动调整到 200%,确实效果会比 4k 更好,但是没有 macOS”质变“的感觉。不过 Windows 很少有用户会接 5k 屏幕,我只能讨论自己使用的主观感受。
    agagega
        32
    agagega  
       2022-09-25 22:34:13 +08:00
    @icestraw
    感谢,我现在是在 24' 4K 上开 200%缩放,感觉很舒服。只是担心 27 寸上开 200%会使 UI 过于大,看到有人说 27 寸适合 1440p ,所以有此疑惑。
    icestraw
        33
    icestraw  
    OP
       2022-09-26 00:26:25 +08:00   1
    @agagega 24 1080p 200%是合适的,如果你习惯这个 PPI ,27 寸 200%感觉 UI 确实过大了,不好用。如果是 macOS 27 寸的话个人建议物理分辨率 1440p 或者 5k 的显示器,这种缩放比率合适,看起来不会憋屈。1440p 上高刷也比较容易。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1679 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 16:15 PVG 00:15 LAX 09:15 JFK 12:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86