跳至內容

影格緩衝區

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

影格緩衝區是一个視訊輸出裝置,伊對一个包含完整影格資料的記持體緩衝區驅動影片顯示器。

記持體緩衝區內底的資訊通常包含螢幕頂懸每一个像素的色彩值,色彩定定以一位、四位元、八位元、十六位元佮二十四位元真彩色格式儲存。有時陣閣有一个 alpha 通道來儉像素的透明度。驅動影格緩衝區所需要的總記憶體量攏著決定輸出訊號的解析度、色彩深度佮調色盤大細。

向量顯示器比影格較慢衝區出現得早,二者有誠大的無仝。使用向量顯示器時,干焦儉圖(graphics primitives)的頂點。輸出顯示器的電子束照命令對一个頂點徙振動到另外一个頂點,佇遮的點之間形成一个類比的線條。煞使用影格來緩衝區的時陣,電子束(若是顯示技術使用電子束)佇規个螢幕頂懸對左右到正、對頂頭到下跤畫出來(trace), 也就是電視機呈現廣播訊號的方式。佮這个同時,螢幕頂懸每一个點的色多媒體簡訊息對影格楦衝區內底提出,形成一系列離散的像素。

顯示模式

個人佮家用電腦中的影格來緩衝區定定有一寡定義好的模式,也就是影格來緩衝區會當做工課的模式。遮的模式會當自動組態硬體以輸出無仝款的解析度、色彩深度、記憶體布局佮重新整理頻率等等。

Unix 中則通常無遮的利便,是閣較傾向直接操縱硬體。這會當閣較靈活的設定會當使用的解析度、色水深度佮重新整理頻率,只受著限制會使用影格來緩衝區的記持體。這款方法的一个副作用是,顯示裝置可能被迫工作佇咧其力袂當佮的模式之下,有時這會致使裝置器硬體上的損害。猶毋過閣較捷看著的是,伊會產生一寡糞埽無路用的輸出。現代的 CRT 顯示器通過引入智慧型保護電路來解決了這一个問題。若予人設定做袂使用的顯示模式,是會顯示出錯誤資訊。

LCD 嘛有含按呢一个保護電路,但是並毋是出於著這个原因。因為 LCD 必須用數字形式採樣顯示訊號(按呢來類比電子束), 所以超出範圍的訊號無法度物理地顯示佇咧監視器頂懸。

調色盤

傳統的影格綴咧衝區支援的色彩模式足廣的。是因為貴參參的記持體內底,大多數古早的影格衝區使用的是一位、兩位、四位元抑是八位元的色深。細的色緻致使袂當產生完整的色彩範圍。其解決方法是為影格緩衝區增加一个走揣表(lookup table,LUT), 共影格緩衝區中儲存的逐个「色水」成做一个索引。這就是所謂的索引色(indexed color)模式。

走揣表扮演著調色盤的角色,伊包含的資料用以定義數量有限的—— 譬如講兩百五十六種—— 色彩。但是這兩百五十六種色彩著著的逐種色彩本身,可能是用真濟位(比如二十四 b,每八位元對應三原色有中的一色)定義的。有矣二十四个元,色彩就會當定義閣較幼路矣。色彩總數有限的圖像總共有的掠襟見臼,毋過𪜶會當予細膩揀出來,故猶原予人認為比直接使用八位元色略勝一圍。

咧索引色水的模式下,影格緩衝區中儲存的資料決定了調色盤中兩百五十六種色彩中的佗一種共用佇當前像素,然後走揣表中儲存的資料被送去三个數-模轉換器,按呢來為顯示器建立影片訊號。

有一寡設計中,嘛會當臨時向行揣表中寫入資料抑是佇咧已經有調色盤中切換,凡勢共圖像分割做一个個水平條,每一个水平條使用家己的調色盤,按呢就會當呈現調色盤的範圍閣較闊的圖像矣。

記持體存取

影格緩衝區通常是以直接對映到 CPU 記持體空間的方式存取的,但是這並毋是唯一的方法。比如講:

  • 共規个影格楦闊的對映到一个予定的記持體範圍;
  • 通過操作對應埠頭直接控制像素點抑是色塊;
  • 共影格緩衝區對映到一个比伊小的記憶體範圍內,必要的時陣進行記持體庫切換(bank switching)。

虛擬影格緩衝區

真濟系統試驗類比影格較慢衝區裝置的功能,通常是看著相容性的考慮。兩个上捷看的虛擬影格衝區是 Linux 的 fbdev 佮 X Window 的 Xvfb。Linux 的 fbdev 共對存取底層影格緩衝區的物理方式抽象成一个可靠的記持體對映,通好存在的程式。按呢共增加移植性,因為程式無需要應對記持體對映無連紲的系統抑是要求記持體庫切換(bank switching)了。

佇咧 X Window System 添加中 Xvfb 是為著佇無圖形影格來緩衝區的時陣執行 X,頭先的原因已經袂當考,佇咧現代系統中伊定定予人用支援 JVM 啥物款的程式,遮的程式無允准佇咧無介面環境中產生動態圖形。

畫面交換

因為影格來緩衝區通常是為處理加減解析度猶毋過設計的,故其記持體嘛通常會比以低解析度顯示單影格所需要的記持體大。因為記持體的大細相當會當觀,故事事佇咧不妨礙當前所顯示影格的提落向影片記持體內底寫入新影格。這是通過共影格講緩衝區為當前影格使用某一部份特定記持體來實現的。這一部份的記持體內容當咧顯示的時,另外一部份完全獨立的記憶體予人填充為下一影格的資料。若是對緩衝區(通常號做「後爿緩衝區」)予人填充,影格緩衝區就予人要求檢視對緩衝區。現此時主緩衝區(通常號做「前端緩衝區」)變成對緩衝區,對緩衝區是變成主緩衝區。這一交換通常在垂直遮無閬中完成,避免螢幕予人「裂裂」(就顯示一半舊影格、一半新影格)。

現代多數影格緩衝區攏有真濟的記持體,以執行主對緩衝區的交換—— 就算是佇高解析度之下。按呢乎,伊就成矣 PC 遊戲程式員所使用的一種標準技術。

圖形加速器

彼圖形加速器也就是現此時所講的顯示卡。

隨著對高品質的圖樣的需求的增長,硬體廠商想出一種方法以減少填充影格緩衝區所需要的 CPU 時間。佇咧 Unix 中常共這種硬體叫做圖形加速器。

定定看著的繪圖命令(加是按怎繪圖指令)以原始的形式(raw form)傳送予圖形加速器,加速器閣共命令的結果點陣化(rasterize)予影格來緩衝區。用這種方法,逐條命令會當儉幾千到幾百萬个 CPU 周期,按呢乎 CPU 就會當轉去做其他的工課矣。

早期加速器是專注射提高二 D GUI 系統的效能,現代的則專注於即時產生三 D 圖像。常見的設計是使用 OpenGL / DirectX 之類的庫共命令發予圖形加速器,了後圖形驅動程式共命令(commands)轉換做加速器的 GPU 的指令(instructions), GPU 使用遮的指令來計算出陣化的結果。遮的點陣化結果以位形式(bit blitted)傳送到影格來緩衝區。了後影格緩衝區的訊號佮內建影片疊加裝置(通常用以佇無修改影格來緩衝區資料的情況下產生滑鼠指標)組合,類比特效則通過修改輸出訊號的方式產生。類比訊號修改的一个例是三 dfx Voodoo 卡使用的抗鋸齒技術,伊為輸出訊號添加一寡輕可的模霧以汫化點陣化圖像的齒抿仔。