幀緩沖區
編輯幀緩沖區,是一個部分隨機存取存儲器(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而非離散視頻卡)主導。
幀緩沖區比較
編輯使用幀緩沖器,可以命令電子束(如果顯示技術使用一種)來執行光柵掃描,這是電視渲染廣播信號的方式。這樣在屏幕上顯示的每個點的顏色信息在掃描過程中直接從幀緩沖區中拉出,從而創建了一組離散的像素,即像素。
幀緩沖區與在出現光柵圖形之前常見的矢量顯示(以及幀緩沖區的概念)明顯不同。使用矢量顯示時,僅存儲圖形圖元的頂點。然后命令輸出顯示器的電子束從一個頂點移動到另一個頂點,在這些點之間的區域上繪制一條線。
同樣,幀緩沖區與早期文本模式顯示中使用的技術不同,在早期文本模式下,幀緩沖區保存字符代碼,而不是單個像素。視頻顯示設備執行與幀緩沖區相同的光柵掃描,但是在引導光束時會在緩沖區中生成每個字符的像素。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/117094/