DirectFB、Layer、Window、Surface之間關系


層(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)模式下,你只能訪問這個表面,否則,你只能創建一個窗口,然后用窗口管理器來繪制這個表面


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM