Skip to content

Latest commit

 

History

History
66 lines (41 loc) · 3.2 KB

scan.md

File metadata and controls

66 lines (41 loc) · 3.2 KB

隔行扫描与逐行扫描

我不是学这个专业的,如果想系统或更深入的了解请百度或找其他资料来深入了解,这里只做简单介绍和个人理解.

帧 与 FPS

我们对这个词应该不陌生,简而言之就是屏幕每次更新都是一张图片,也就是每一帧,通过不断更新,形成长期更新的效果,

FPS指的是每秒更新的频率(也就是每秒切换多少张图片),通常达到24FPS就可以算作流畅(我们的肉眼已经看不出来切换带来的闪烁了),电影就是按照这个标准来的。

逐行扫描

在这之前我们先脑补两个简单的小东西分别是 [电子束,荧光粉],它们是显示设备中用于渲染你的屏幕的硬件设备. 电子束通过逐行扫描透过荧光粉点亮了你的屏幕一条区域,它不断的透过荧光粉逐行扫描你的屏幕,当它离开时,当前区域会瞬间暗下来,

(其实你屏幕当中一直有一个最亮的一个区域,你可以把它想象成水平方向的一条线,它正是 电子束当前照亮的地方,然而最暗的地方就是当前帧下它最开始扫描的地方. 这也就是为什么七八十年代的老电视机没信号或电压不稳时,会出现一行一行的灰条)

就这样一行一行的扫描,直到把你屏幕扫了之后,它再开始下一帧的工作(它很悲催,下一帧还是这个工作)这就出现了一个问题,当电子束到你屏幕下半部分时,你的上半部分的亮度已经在衰减, 这样在每帧切换时肯定会出现闪烁问题。

在早期,为了解决这个问题,就只有加快刷新频率,在上半部分还没变暗时,下半部分已经扫描完成。 如果改成60FPS(1/60秒),人眼能感觉到的衰减就很小了,可是这样做,相比以前更短的时间内完成扫描总行数的任务,技术要求过高,只能使用另一个方法实现,那就是隔行扫描。

隔行扫描

隔行扫描比逐行扫描出现的晚,早期被应用在电视广播上。如上所述, 正是因为它在满足画质的情况下对技术有着硬性的要求,所以才迫使人们使用隔行扫描这种投机取巧的方法, 说投机取巧再合适不过了,不过没有贬义的意思. 所谓为投机取巧是因为,他把上下两部分平均的分开屏幕的垂直方向上,使得人察觉出来的敏感度降低。

顺着历史接着说,逐行扫描我们遇到的困境:

  1. 由于逐行扫描方式两个画面之间停留间隔较久,体验效果不佳.
  2. 如果刷新频率上去了,可是因为技术问题,不能扫描所有行.

既然一帧渲染不了所有行,那就两帧呗,隔行扫描应运而生,它先渲染奇数行,之后第二次渲染偶数行。

只要频率高,两次扫描的间隔的衰减是看不出来的。

css queries

我们可以通过 css 媒体查询来查看设备是属于哪种屏幕

    p {
      font-family: cursive;
    }

    @media (scan: interlace) {
      p {
        font-family: sans-serif;
      }
    }

    @media (scan: progressive) {
      p {
        font-family: serif;
      }
    }

这样,我们可以在两种不同的屏幕上进行布局以及动画的选择。