V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ysy950803
V2EX  ›  Android

60Hz 屏幕下不卡的 App 到了 90Hz 是不是就卡了?

  •  1
     
  •   ysy950803 · 2020-03-22 14:39:26 +08:00 · 10914 次点击
    这是一个创建于 1705 天前的主题,其中的信息可能已经有所发展或是发生改变。
    以前做 Android 自定义动画的时候大家就知道,每一帧的绘制逻辑代码要在 16ms 内完成,否则就会掉帧。但这是对于传统的 60Hz 刷新率屏幕来说的。现在大家都在搞 90 甚至 120Hz 的噱头,这么说,以前刚好不卡的代码(比如每次绘制都刚好花掉 16ms ),到了 90Hz 上面,岂不是就掉帧了么?
    不知道是不是我有什么误解,还请教各位大佬些!
    17 条回复    2020-03-27 16:22:25 +08:00
    ysy950803
        1
    ysy950803  
    OP
       2020-03-22 14:56:12 +08:00
    60 fps 的系统 , 1s 内需要生成 60 个可供显示的 Frame , 也就是说绘制一帧需要 16.67ms ( 1/60 ) , 才会不掉帧 ( FrameMiss ).
    90 fps 的系统 , 1s 内生成 90 个可供显示的 Frame , 也就是说绘制一帧需要 11.11ms ( 1/90 ) , 才不会掉帧 ( FrameMiss ).
    ax521
        2
    ax521  
       2020-03-22 15:30:58 +08:00 via Android
    这个是专家问题您接着来
    reus
        3
    reus  
       2020-03-22 15:38:12 +08:00
    屏幕刷新率和你用什么帧率渲染没有关系
    wdv2ly
        4
    wdv2ly  
       2020-03-22 15:38:26 +08:00 via Android
    是的
    yukiww233
        5
    yukiww233  
       2020-03-22 15:53:24 +08:00
    掉帧不一定卡
    HangoX
        6
    HangoX  
       2020-03-22 16:00:09 +08:00
    你 cpu 能力也上升了。。。绘制能力上去了
    elfive
        7
    elfive  
       2020-03-22 16:28:22 +08:00 via iPhone
    拉长每一帧显示时间就好了啊。
    同样是显卡输出 60 帧每秒,在 60Hz 刷新率的显示器上,显卡输出的每帧显示 16.67ms,换到了 90Hz 的显示器上,每帧同样保持 16.67ms 即可。不过 16.67ms 并不是 11.11ms 的整数倍,所以实际上可能依据显示器驱动程序的算法采用不同的显示算法咯。
    elfive
        8
    elfive  
       2020-03-22 16:31:17 +08:00 via iPhone
    @elfive 这也是大部分显卡输出帧率和显示器帧率不一致的情况下会出现画面撕裂的原因,所以 AMD 和 Nvidia 分别弄出了 FreeSync 和 G-Sync 来动态调整显示器刷新率,以匹配显卡输出的帧率来减少或者消除画面撕裂。
    cev2
        9
    cev2  
       2020-03-22 16:33:50 +08:00 via Android   ❤️ 1
    赞同 5 楼,掉帧不代表卡。
    但软件锁帧 60 帧的情况下,整数倍 Hz 应该更好些吧,不然会跳帧?(等大佬指点)除非屏幕像 N/A 一样 GPU sync 。
    Phishion
        10
    Phishion  
       2020-03-22 16:35:00 +08:00   ❤️ 1
    你 144 帧的屏幕看电影会觉得比用 60 帧的普通屏幕更卡么?
    340244120w
        11
    340244120w  
       2020-03-22 19:48:45 +08:00 via iPhone   ❤️ 1
    @elfive 画面撕裂倒不是因为显卡输出帧率和显示器刷新率不一致。

    显示器是垂直扫描输出,而显卡不断产生画面信号,可能显示器只输出了半张画面,就赶紧在显示器下半部分输出下一帧画面。
    垂直同步的原理是显示器垂直输出一副完整画面后,才继续读取下一个画面的信号。
    现在手机系统都是垂直同步。

    回到楼主问题,楼主说的动画逻辑要小于 1/60 秒,其实本质为了保证动画大于 60fps 。因为垂直同步下,画面实际感受的流畅度取决于 fps 与显示屏刷新率两者中最小值。
    所以楼主仅仅需要做的就是性能尽可能优化的情况,保证帧数尽可能大就行了。
    elfive
        12
    elfive  
       2020-03-22 19:58:30 +08:00 via iPhone
    感谢详细解释
    winterfell30
        13
    winterfell30  
       2020-03-23 09:07:36 +08:00
    掉帧是相对手机来说的,卡不卡是相对人眼来说的,显示器的刷新率高了绘制帧率卡在 1/60 的话,如果像 11 楼说的都是垂直同步的话,我理解对人眼来说应该是没区别的吧?
    cw2k13as
        14
    cw2k13as  
       2020-03-23 10:42:56 +08:00
    ?会卡但是你看不出来卡,电影院好像是 24 帧,你觉得卡吗
    cominghome
        15
    cominghome  
       2020-03-27 00:16:15 +08:00
    @cw2k13as 电影院那个还是不一样的。手机上的 90hz 和 60hz 拿来直接的话,我有 9 成把握猜对,不过日常使用感知不强罢了(人眼调节了?)
    cw2k13as
        16
    cw2k13as  
       2020-03-27 16:19:35 +08:00
    @cominghome 场景不一样,环境因素也不一样,要是硬比肯定是可以看出来,就看你大脑的运算力,2333 看你是不是一直超频关注这个卡
    cw2k13as
        17
    cw2k13as  
       2020-03-27 16:22:25 +08:00
    @cominghome 我好想是记得眼睛是可以捕捉的,人眼像素是很高的,只是你的大脑会智能的去过滤没必要的开销
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3360 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 04:57 · PVG 12:57 · LAX 20:57 · JFK 23:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.