幀緩存定義
『壹』 幀緩存的詳細介紹
幀緩沖(framebuffer)是linux為顯示設備提供的一個介面,把顯存抽象後的一種設備,他允許上層應用程序在圖形模式下直接對顯示緩沖區進行讀寫操作。這種操作是抽象的,統一的。用戶不必關心物理顯存的位置、換頁機制等等具體細節。這些都是由Framebuffer設備驅動來完成的。
幀緩沖驅動的應用廣泛,在linux的桌面系統中,Xwindow伺服器就是利用幀緩沖進行窗口的繪制。尤其是通過幀緩沖可顯示漢字點陣,成為Linux漢化的唯一可行方案。
Linux FrameBuffer 本質上只是提供了對圖形設備的硬體抽象,在開發者看來,FrameBuffer 是一塊顯示緩存,往顯示緩存中寫入特定格式的數據就意味著向屏幕輸出內容。所以說FrameBuffer就是一塊白板。例如對於初始化為16 位色的FrameBuffer 來說, FrameBuffer中的兩個位元組代表屏幕上一個點,從上到下,從左至右,屏幕位置與內存地址是順序的線性關系。
幀緩存可以在系統存儲器(內存)的任意位置,視頻控制器通過訪問幀緩存來刷新屏幕。 幀緩存也叫刷新緩存 Frame buffer 或 refresh buffer, 這里的幀(frame)是指整個屏幕范圍。
幀緩存有個地址,是在內存里。我們通過不停的向frame buffer中寫入數據, 顯示控制器就自動的從frame buffer中取數據並顯示出來。全部的圖形都共享內存中同一個幀緩存。
CPU指定顯示控制器工作,則顯示控制器根據CPU的控制到指定的地方去取數據 和 指令, 目前的數據一般是從顯存里取,如果顯存里存不下,則從內存里取, 內存也放不下,則從硬碟里取,當然也不是內存放不下,而是為了節省內存的話,可以放在硬碟里,然後通過指令控制顯示控制器去取。幀緩存 Frame Buffer,裡面存儲的東西是一幀一幀的, 顯卡會不停的刷新Frame Buffer, 這每一幀如果不捕獲的話, 則會被丟棄,也就是說是實時的。這每一幀不管是保存在內存還是顯存里,都是一個顯性的信息,這每一幀假設是800x600的解析度, 則保存的是800x600個像素點,和顏色值。
『貳』 幀緩存的定義
一個支持OpenGL渲染的窗口 (即幀緩存) 可能包含以下的組合:
· 至多4個顏色緩存
· 一個深度緩存
· 一個模板緩存
· 一個積累緩存
· 一個多重采樣緩存