FrameBuffer from Wiki

帧缓存([[Framebuffer]])是一个视频输出设备,用于驱动从包含完整帧数据的记忆缓存里获取数据并显示成视频。<br />
上述记忆缓存里的信息由代表屏幕上各个[[pixel|像素]]点的颜色值构成。颜色值一般以1-bit二进制(单色,黑白),4-bit([[Palette (computing)|palettized]]),8-bit,16-bit[[Highcolor|高色彩]],24-bit[[truecolor|真彩]]格式。额外的一个alpha值,用于保存像素的透明度信息。所有这样的记忆存储依靠输出信号的分辨率和[[color depth|颜色的深度]]及[[palette|调色板]]大小。<br />
帧缓存同矢量显示有着显著的不同。矢量显示的出现普遍比帧缓存要早得多。在矢量显示中只有图像的若干顶点被储存。输出设备的电子枪被设定为从一个顶点移动到另一个顶点,追溯这些点间区域内的模拟线。但是在帧缓存的情况下,电子枪被设定要求按照从左向右,自顶而下的轨迹扫描整个屏幕。同时,屏幕上每一点的颜色值也从帧缓存中获取,产生了一系列离散化的图像元素,即像素。<br />
== 显示模式 ==
个人或家庭装使用的帧缓存有着多套已经定义的模式,在不同模式下帧缓存运行有所不同。这些模式能够自动重配置硬件,以实现输出不同的分辨率、颜色深度、存储分布和更新频率。
在Unix系列机器和操作系统中,由于对硬件设置的直接操作使得这些便利消失了。这些操作非常具有弹性,因为在任何的分辨率、色彩深度和更新率都是可获得的。<br />
这个方法有个副作用,显示设备被驱动过程中可能会超出自己的容量。有的情况下,由硬件导致的这个问题可能会导致对显示的损伤。更为一般的情况下,它仅仅产生混乱的和不可用的输出。现代CRT显示器通过引进智能保护线路来解决了这个问题。当显示模式发生改变所时,显示器会尝试获取一个对于新的刷新频率的信号锁。如果显示器无法获取这个信号锁,或者这个信号在设计限定控制范围之外,显示器会忽视帧缓存信号和可能呈现给用户一个相关的错误信息。<br />
LCD显示器也包含相似的保护线路,但是出于不同的原因。因为LCD必须数字化采样显示信息(用于模拟一个电子枪),任何超出范围的信号不能在显示器上物理显示出来。<br />
== 色彩调色板 ==
帧缓存已经能够支持广泛的色彩模式。由于存储的开销,大部分早期的帧缓存使用1-bit、2-bit、4-bit或8-bit的色彩深度。有关这些色彩深度的问题是不是所有的色彩都能被显示。这个问题的解决方法是通过添加一个查询表到帧缓存。储存在帧缓存存储上的每个色彩相当于一个色彩索引;这个表有时被称为“索引色彩表”。<br />
这个查询表充当一个包含数据的调色板,来定义有限数量的不同颜色。但是,每种色彩被定义时,要求空间都超过了8bit,比如24bit,其中每8bit定义三基色之一。有效24bit,色彩会被定义的更加精细且精确,还包括全范围的[[gamut]]。当在一幅图像中存在的色彩总量总是有限度的,但是它们能被充分地选中,并且这个表格明显地优于8-bit色彩。<br />
来自帧缓存的数据决定调色板里的色彩中哪个需要在目前的像素点上显示。并且存储在查看表中的数据通过三个数-模转换器才产生针对显示的视频信号。<br />
帧缓存的输出数据,代替了相对粗糙的原始色彩数据,并作为查询表中的索引。换句话说,索引决定了色彩项,而来自索引表的数据精确的决定了当下像素点需要使用什么色彩。<br />
== 访问存储 ==
尽管帧缓存一般通过一段直接映射CPU存储空间的存储来访问,但是这不是唯一被访问的方法。帧缓存有不少用于访问存储的方法,其中挺常见的有这些:
* Bulleted list item
* 将整个帧缓存映射到一个给定的存储范围。
* 端口命令设置每个像素、像素范围及调色板。
* 映射到一段小于帧缓存存储的存储空间上,然后在必要时进行[[bank switching]]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值