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

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

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

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

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

参考资料

相关推荐
500了6 小时前
Kotlin基本知识
android·开发语言·kotlin
人工智能的苟富贵7 小时前
Android Debug Bridge(ADB)完全指南
android·adb
小雨cc5566ru11 小时前
uniapp+Android面向网络学习的时间管理工具软件 微信小程序
android·微信小程序·uni-app
bianshaopeng13 小时前
android 原生加载pdf
android·pdf
hhzz13 小时前
Linux Shell编程快速入门以及案例(Linux一键批量启动、停止、重启Jar包Shell脚本)
android·linux·jar
火红的小辣椒14 小时前
XSS基础
android·web安全
勿问东西16 小时前
【Android】设备操作
android
五味香16 小时前
C++学习,信号处理
android·c语言·开发语言·c++·学习·算法·信号处理
图王大胜18 小时前
Android Framework AMS(01)AMS启动及相关初始化1-4
android·framework·ams·systemserver
工程师老罗20 小时前
Android Button “No speakable text present” 问题解决
android