DirectFB中的一些結構(Screen,Window, Layer, Surface)及其之間的關係

DirectFB 中一些主要數據類型之間的關係


層(Layers)

表示一塊兒獨立的圖像緩衝區。大多數的嵌入式設備都有多個層。他們由硬件使用合適的alpha值來blending,然後顯示。

 

表面 (Surface)

用來保存像素數據的保留內存區域。DirectFB的Drawing和blitting操作最終都是作用於表面(surfaces)上.表面的內存可以從顯存(video memory)得到,也可以從系統內存(system meomroy)得到,這由給定的限制決定。

 

主層 (Primary Surface)

表示特定層的frame buffer的特殊表面。如果主表面是單緩衝的,任何作用到這個主層的操作,都會直接在屏幕上見到。

 

 

 

他們之間的關係主要是一些一對一或是一對多的關係:

  • 1 IDirectFB (頂層) <--> N 屏幕(Screens)
  • 1 屏幕(Screen) <--> N 層(Layers)
  • 1 層(Layer) <--> 1 主表面(Primary Surface)
  • 1 層(Layer) <--> N 窗口(Windows)
  • 1 窗口(Window) <--> 1 窗口表面(Window Surface)
  • 1 表面(Surface) <--> N 子表面(Subsurfaces)

 

通常的狀況是一個屏幕有一個顯示層,但是DFB支持他們每個有多個實例

層(Layers)和屏幕( Screens)

每一個屏幕可以有一個或是多個層,通常,一個屏幕只有一個層,但是某些支持overlays的系統,由於硬件支持一層顯示在另一層上面,可以有多層。

 

屏幕(Screens)和(Windows)

屏幕不能直接創建窗口(Window),但是你能請求得到一個屏幕(Screen)的主層(Primary Layer)的ID,然後請求IDirectFB接口(interface)給你那個層(Layer)的接口,然後通過這個接口來創建窗口。

表面(Surfaces)和(Windows)

每一個窗口有一個和它關聯的表面,畫在表面上的內容並不會馬上顯示在屏幕上,因爲窗口管理器會負責將窗口的所有表面組合到主表面上---基於所要刷新的區域和堆棧順序。當有變化的時候,表面的Flip()函數會通知窗口管理器。

表面(Surfaces)和(Layers)

一個層同樣有一個和他關聯的表面;這個表面是這個層的屏幕內存的直接表現,在獨佔(exclusive)模式下,你只能訪問這個表面,否則,你只能創建一個窗口,然後用窗口管理器來繪製這個表面


發佈了98 篇原創文章 · 獲贊 106 · 訪問量 74萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章