Android14 显示系统剖析1 ———— 计算机显示基本原理

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. 总结

  • 显示器上有很多的像素点

  • 帧缓存是一块内存,里面存储了描述像素点的信息

  • 显示器中有一个驱动板,从显卡接收显示信号,控制显示器上像素点的显示

  • 显示驱动电路存在于显卡上,主要功能是将帧缓存转换为驱动板需要的电信号

参考资料

相关推荐
叽哥5 分钟前
Kotlin学习第 1 课:Kotlin 入门准备:搭建学习环境与认知基础
android·java·kotlin
风往哪边走23 分钟前
创建自定义语音录制View
android·前端
用户20187928316723 分钟前
事件分发之“官僚主义”?或“绕圈”的艺术
android
用户20187928316723 分钟前
Android事件分发为何喜欢“兜圈子”?不做个“敞亮人”!
android
Kapaseker2 小时前
你一定会喜欢的 Compose 形变动画
android
QuZhengRong3 小时前
【数据库】Navicat 导入 Excel 数据乱码问题的解决方法
android·数据库·excel
zhangphil4 小时前
Android Coil3视频封面抽取封面帧存Disk缓存,Kotlin(2)
android·kotlin
程序员码歌10 小时前
【零代码AI编程实战】AI灯塔导航-总结篇
android·前端·后端
书弋江山12 小时前
flutter 跨平台编码库 protobuf 工具使用
android·flutter
来来走走14 小时前
Flutter开发 webview_flutter的基本使用
android·flutter