帧缓冲区

编辑
本词条由“匿名用户” 建档。

帧缓冲区,是一个部分随机存取存储器(RAM)含有一个位图,其驱动视频显示器。它是一个内存缓冲区,其中包含代表完整视频帧中所有像素的数据。现代视频卡的内核中包含帧缓冲电路。该电路将内存中的位图转换为可以在计算机监视器上显示的视频信号。 在计算中,屏幕缓冲区是计算机应用程序所使用的计算机内存的一部分,用于表示要在计算机显示器上显示的内容。屏幕缓冲区也可以称为视频缓冲区,再生缓冲区或简称为再生缓冲区。屏...

帧缓冲区

编辑

帧缓冲区,是一个部分随机存取存储器(RAM)含有一个位图,其驱动视频显示器。它是一个内存缓冲区,其中包含代表完整视频帧中所有像素的数据。现代视频卡的内核中包含帧缓冲电路。该电路将内存中的位图转换为可以在计算机xxx器上显示的视频信号。

在计算中,屏幕缓冲区是计算机应用程序所使用的计算机内存的一部分,用于表示要在计算机显示器上显示的内容。屏幕缓冲区也可以称为视频缓冲区,再生缓冲区或简称为再生缓冲区。屏幕缓冲区应与视频内存区分开。为此,还使用术语“屏幕外缓冲区”。

帧缓冲区

缓冲区中的信息通常由要在显示器上显示的每个像素的颜色值组成。颜色值通常以1位二进制单色)、4位有色、8位有色、16位高色和24位真彩色格式存储。有时会使用一个附加的alpha通道来保留有关像素透明度的信息。帧缓冲区所需的内存总量取决于输出信号的分辨率以及色深或调色板大小。

显示模式

编辑

个人和家庭计算中使用的缓冲器通常具有一组定义的模式,帧缓冲器可以在这些模式下运行。这些模式将硬件重新配置为输出不同的分辨率、颜色深度、内存布局和刷新速率时序。

在Unix机器操作系统的世界中,通常避免使用这种便利,而直接使用硬件设置。这种操作要灵活得多,因为可以实现任何分辨率,颜色深度和刷新率-仅受帧缓冲区可用内存的限制。

这种方法的不幸的副作用是显示设备可能无法正常运行。在某些情况下,这会导致显示器的硬件损坏。更常见的是,它只是产生乱码和无法使用的输出。现代的CRTxxx器通过引入保护电路来解决此问题。更改显示模式后,xxx器将尝试锁定新的刷新频率。如果xxx器无法获得信号锁定,或者信号超出其设计限制范围,则xxx器将忽略帧缓冲信号,并可能向用户显示错误消息。

LCDxxx器倾向于包含类似的保护电路,但是出于不同的原因。由于LCD必须以数字方式对显示信号进行采样(从而模拟电子束),因此任何超出范围的信号都无法物理显示在xxx器上。

调色板

编辑

传统上,帧缓冲区支持多种颜色模式。由于内存的浪费,大多数早期的帧缓冲区使用1位(2色)、2位(4色)、4位(16色)或8位(256色)色深。如此小的色深的问题在于不能产生全部范围的颜色。解决此问题的方法是索引颜色,该颜色将查找表添加到帧缓冲区。存储在帧缓冲存储器中的每种颜色都用作颜色索引。查找表用作具有有限数量的不同颜色的调色板。

在某些设计中,还可以在运行时将数据写入LUT(或在现有调色板之间切换),从而允许将图片分为具有自己调色板的水平条,从而渲染具有更宽调色板的图像。例如,查看一张户外拍摄的照片,图片可以分为四个条形,顶部的一个强调天空色调,下一个具有叶子色调,下一个具有皮肤和衣服色调,而下一个具有底色。这就要求每个调色板必须具有重叠的颜色,但是仔细地做就可以提供很大的灵活性。

内存访问

编辑

虽然通常通过直接映射到CPU内存空间的内存访问帧缓冲区,但这并不是访问它们的xxx方法。帧缓冲区在用于访问内存的方法上有很大的不同。一些最常见的是:

  • 将整个帧缓冲区映射到给定的内存范围。
  • 端口命令用于设置每个像素,像素范围或调色板条目。
  • 映射小于帧缓冲内存的内存范围,然后根据需要进行组切换。

帧缓冲组织可以是压缩像素或平面像素。帧缓冲区可能是所有点均可寻址的,或者对其更新方式有限制。

显卡上的RAM

编辑

视频卡始终具有一定数量的RAM。该RAM是图像数据的位图被“缓冲”以供显示的地方。因此,当指代此RAM时,术语帧缓冲区通常可以互换使用。

CPU将图像更新发送到视频卡。卡上的视频处理器形成屏幕图像,并将其作为大位图存储在帧缓冲区中。卡使用RAM中的位图来连续刷新屏幕图像。

虚拟帧缓冲区

编辑

许多系统通常出于兼容性的原因而尝试模拟帧缓冲设备的功能。两个最常见的虚拟帧缓冲区是Linux帧缓冲区设备(fbdev)和X虚拟帧缓冲区(Xvfb)。Xvfb已添加到X Window系统发行版中,以提供一种无需图形帧缓冲区即可运行X的方法。Linux帧缓冲设备的开发旨在将用于访问基础帧缓冲的物理方法抽象为保证内存映射,程序可以轻松访问该内存映射。这增加了可移植性,因为不需要程序来处理内存映射不连续或需要库切换的系统。

翻页

编辑

可以将帧缓冲区设计为具有足够的内存来存储两个帧的视频数据。在通常称为双缓冲或更具体地说是页面翻转的技术中,帧缓冲器使用其一半的内存来显示当前帧。当显示该内存时,另一半的数据将填满下一帧的数据。一旦辅助缓冲区已满,将指示帧缓冲区显示辅助缓冲区。主缓冲区成为辅助缓冲区,辅助缓冲区成为主缓冲区。通常在垂直消隐间隔之后执行此切换,以避免屏幕撕裂,其中旧框架的一半和新框架的一半一起显示。

页面翻转已成为PC游戏程序员使用的一种标准技术。

图形加速器

编辑

随着对更好图形的需求增加,硬件制造商创造了一种减少填充帧缓冲区所需的CPU时间的方法。这通常称为图形加速。常见的图形绘图命令(其中许多是几何图形命令)以原始格式发送到图形加速器。然后,加速器将命令的结果栅格化到帧缓冲区。此方法使CPU腾出时间来做其他工作

早期的加速器专注于提高2D GUI系统的性能。在保留这些2D功能的同时,大多数现代加速器都专注于实时生成3D图像。常见的设计使用诸如OpenGL或Direct3D之类的图形库,该图形库与图形驱动程序连接以将收到的命令转换为加速器的图形处理单元(GPU)的指令。GPU使用这些指令来计算光栅化的结果,并且结果会变位到帧缓冲区。然后结合内置视频叠加设备(通常用于在不修改帧缓冲器数据的情况下产生鼠标光标)以及通过修改输出信号产生的任何最终特殊效果,来产生帧缓冲器的信号。这种最终特殊效果的一个例子是3dfx Voodoo卡使用的空间抗锯齿技术。这些卡在输出信号上增加了轻微的模糊,使光栅化图形的混叠现象不那么明显。

曾经有许多图形加速器制造商,包括:3dfx Interactive;ATI ; 大力神; 三叉戟; 英伟达; 半径; S3图形; SiS和Silicon Graphics。截至2015年,基于x86的系统的图形加速器市场主要由Nvidia(于2002年收购3dfx)、AMD(于2006年收购ATI)和Intel(目前仅生产集成GPU而非离散视频卡)主导。

帧缓冲区比较

编辑

使用帧缓冲器,可以命令电子束(如果显示技术使用一种)来执行光栅扫描,这是电视渲染广播信号的方式。这样在屏幕上显示的每个点的颜色信息在扫描过程中直接从帧缓冲区中拉出,从而创建了一组离散的像素,即像素。

帧缓冲区与在出现光栅图形之前常见的矢量显示(以及帧缓冲区的概念)明显不同。使用矢量显示时,仅存储图形图元的顶点。然后命令输出显示器的电子束从一个顶点移动到另一个顶点,在这些点之间的区域上绘制一条线。

同样,帧缓冲区与早期文本模式显示中使用的技术不同,在早期文本模式下,帧缓冲区保存字符代码,而不是单个像素。视频显示设备执行与帧缓冲区相同的光栅扫描,但是在引导光束时会在缓冲区中生成每个字符的像素。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/117094/

(3)
词条目录
  1. 帧缓冲区
  2. 显示模式
  3. 调色板
  4. 内存访问
  5. 显卡上的RAM
  6. 虚拟帧缓冲区
  7. 翻页
  8. 图形加速器
  9. 帧缓冲区比较

轻触这里

关闭目录

目录