1. 显示器基本原理
1.1. 发光二极管显示器
最简单的显示器就是我们经常在户外看到的各种"发光"的广告牌。
这种单色显示屏由一种颜色的发光二极管组成,由显示驱动电路决定每一个二极管的亮或灭,每一个二极管可以被称为一个像素
单色显示屏的颜色由发光二极管的颜色决定,人们当然不可能满足单色显示,怎样才可以实现一个发光二极管发出各种颜色的光呢?
最简单的方式就是把三种颜色的发光二极管做到一起,这三种颜色就是三原色 ------ 红色、绿色和蓝色。这三个二极管以不同的亮度发光,就可以组合成多种颜色。这种组合到一起的二极管称为多色发光二极管
。
户外的各类显示丰富的广告屏就是又很多个多色发光二极管
组成的。二极管的数量越多,显示就越细腻。
这类又发光二极管组成的显示器一般我们称之为发光二极管显示器
。
1.2 OLED 显示屏
如果把发光二级管做得很小,很薄,就可以用于手机,平板,电视等设备中。
有一种二级管叫做有机发光二极管(Organic Light-Emitting Diode, 缩写 OLED)
可以做得很小很薄,用这种二极管做的显示设备就叫做 OLED 屏幕。目前韩国的 LG 三星在 OLED 领域遥遥领先,卖得贵得一批!
OLE D屏幕上每一个像素都由三个发光二极管组成,它们像灯泡一样会老化,老化的发光二极管的亮度会发生衰减;如果一个显示屏长期显示一副画面,则屏幕上的发光二极管老化程度会不一样。这就带来 OLED 显示屏的硬伤------俗称「烧屏」。
图片来自 www.sohu.com/a/214443964...
1.3 LCD 显示器
OLED 是最近一些年才出现的新技术,还存在成本高、工艺不成熟的缺点。因此我们现在使用的电视机、显示器主要还是以 LCD 为主。
LCD 的全称是 液晶显示器(Liquid-Crystal Display,缩写:LCD)
。与 OLED 不同的是,显示屏本身不发光,而是有一个白色的背光光源。这个光源通过一层特殊材料(主要是薄膜晶体管+液晶+彩色绿光骗)后,就可以变成红绿蓝三种颜色。LCD 显示屏通过薄膜晶体管控制液晶的偏转角度,进而能控制透过它的背光亮度,从何改变显示的颜色。
图片来自 www.zhihu.com/question/29...
每一个液晶显示器都由数百万个这样的三色单元-组成,最终成为我们在屏幕上看到的图像。
图片来自 www.zhihu.com/question/29...
2. 驱动板
显示器里有一块被称为驱动板
的电路,它一方面控制着显示面板上的每一个子像素的亮灭,另一方面通过 DP HDM 等接口与主机的显卡连接,接受主机输出的显示信号。
图片来自 www.hzjingxian.com/m/view.php?...
显示器并不是一次性显示面板上所有像素,而是一次控制一行,自上至下地控制显示面板上每一行像素,周而复始。由于刷新的速度很快(通常一秒钟60次),因此你不会看到屏幕在闪烁,这样做主要是为了降低硬件设计的复杂度。
如果你用较快的快门速度拍摄老式 CRT 显示器,你会发现它真的 "一行行地" 显示图像(液晶显示器不会出现这种情况,但它也是逐行扫描的)
图片来自 www.zhihu.com/question/29...
3. 帧缓存(FrameBuffer)
显示器上显示的一帧图像是由很多像素点构成的。每个像素都包含红绿蓝,也就是 RGB 三个分量。每个分量可以用一个数字表示。最常见的是使用 8 个二进制位来表示一个分量,也就是一个分量的范围是 0-255。这样三个分量一起就可以表示 256256256 种颜色了。
帧缓存(FrameBuffer) 是内存的一块区域,这块区域中的内容和显示器上显示的每个像素是一一对应的。
这块内存中的一个字节对应一个分量,三个字节对应 RGB 三个分量,最后在接一个透明度(alpha)的分量,刚好 32 位对齐。
程序员写好代码,这些代码可以看做是指令,把这些指令转换为帧缓存(FrameBuffer)的过程称之为渲染。
渲染这个工作由一群研究图形学的哥们来做,非常复杂,但是他们很善良,提供了很多库给我们这些臭写代码的用,Android 中的图像渲染库主要有 skia OpenGL-ES vulkan。
4. 显示驱动电路
有了帧缓存,我们还需要一个设备,把帧缓存里面的 0 1 转换为驱动板需要的电信号,这个设备通常位于显卡上,称之为显示驱动电路,需要注意的是显示驱动电路只是图像信号的转换器,不具备计算能力,有计算能力的是显卡上的 GPU 芯片。
5. 总结
-
显示器上有很多的像素点
-
帧缓存是一块内存,里面存储了描述像素点的信息
-
显示器中有一个驱动板,从显卡接收显示信号,控制显示器上像素点的显示
-
显示驱动电路存在于显卡上,主要功能是将帧缓存转换为驱动板需要的电信号