<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 嵌入式Linux系統(tǒng)圖形及圖形用戶界面

          嵌入式Linux系統(tǒng)圖形及圖形用戶界面

          作者: 時間:2012-05-22 來源:網(wǎng)絡(luò) 收藏

          當(dāng)然,因?yàn)椴煌娘@示芯片具有不同的加速能力,對memio 的使用和定義也各自不同,這時,就需要針對加速芯片的不同類型來編寫實(shí)現(xiàn)不同的加速功能。比如大多數(shù)芯片都提供了對矩形填充的硬件加速支持,但不同的芯片實(shí)現(xiàn)方式不同,這時,就需要針對不同的芯片類型編寫不同的用來完成填充矩形的函數(shù)。

          說到這里,讀者可能已經(jīng)意識到 FrameBuffer 只是一個提供顯示內(nèi)存和顯示芯片寄存器從物理內(nèi)存映射到進(jìn)程地址空間中的設(shè)備。所以,對于應(yīng)用程序而言,如果希望在 FrameBuffer 之上進(jìn)行圖形編程,還需要完成其他許多工作。舉個例子來講,F(xiàn)rameBuffer 就像一張畫布,使用什么樣子的畫筆,如何畫畫,還需要你自己動手完成。

          1.4 LibGGI

          LibGGI 試圖建立一個一般性的圖形接口,而這個抽象接口連同相關(guān)的輸入(鼠標(biāo)、鍵盤、游戲桿等)抽象接口一起,可以方便地運(yùn)行在 X Window、SVGALib、FrameBuffer 等等之上。建立在 LibGGI 之上的應(yīng)用程序,不經(jīng)重新編譯,就可以在上述這些底層圖形接口上運(yùn)行。但不知何故,LibGGI 的發(fā)展幾乎停滯。

          2 Linux 圖形領(lǐng)域的高級函數(shù)庫

          2.1 Xlib 及其他相關(guān)函數(shù)庫

          在 X Window 系統(tǒng)中進(jìn)行圖形編程時,可以選擇直接使用 Xlib。Xlib 實(shí)際是對底層 X 協(xié)議的封裝,可通過該函數(shù)庫進(jìn)行一般的圖形輸出。如果你的 X Server 支持 DGA,則可以通過 DGA 擴(kuò)展直接訪問顯示設(shè)備,從而獲得加速支持。對一般用戶而言,由于 Xlib 的接口太原始而且復(fù)雜,因此一般的圖形程序選擇其他高級一些的圖形庫作為基礎(chǔ)。比如,GTK、QT 等等。這兩個函數(shù)同時還是一些高級的支持函數(shù)庫。由于種種原因,GTK、QT 等函數(shù)庫存在有龐大、占用系統(tǒng)資源多的問題,不太適合在系統(tǒng)中使用。這時,你可以選擇使用 FLTK,這是一個輕量級的圖形函數(shù)庫,但它的主要功能集中在用戶界面上,提供了較為豐富的控件集。

          2.2 SDL

          SDL(Simple DirectMedia Layer)是一個跨平臺的多媒體游戲支持庫。其中包含了對圖形、聲音、游戲桿、線程等等的支持,目前可以運(yùn)行在許多平臺上,其中包括 X Window、X Window with DGA、Linux FrameBuffer 控制臺、Linux SVGALib,以及Windows DirectX、BeOS 等等。

          因?yàn)?SDL 專門為游戲和多媒體應(yīng)用而設(shè)計開發(fā),所以它對圖形的支持非常優(yōu)秀,尤其是高級圖形能力,比如 Alpha 混和、透明處理、YUV 覆蓋、Gamma 校正等等。而且在 SDL 環(huán)境中能夠非常方便地加載支持 OpenGL 的 Mesa 庫,從而提供對二維和三維圖形的支持。

          可以說,SDL 是編寫跨平臺游戲和多媒體應(yīng)用的最佳平臺,也的確得到了廣泛應(yīng)用。

          2.3 Allegro

          Allegro 是一個專門為 x86 平臺設(shè)計的游戲圖形庫。最初的 Allegro 運(yùn)行在 DOS 環(huán)境下,而目前可運(yùn)行在 Linux FrameBuffe 控制臺、Linux SVGALib、X Window 等系統(tǒng)上。Allegro 提供了一些豐富的圖形功能,包括矩形填充和樣條曲線生成等等,而且具有較好的三維圖形顯示能力。由于 Allegro 的許多關(guān)鍵代碼是采用匯編編寫的,所以該函數(shù)庫具有運(yùn)行速度快、資源占用少的特點(diǎn)。然而,Allegro 也存在如下缺點(diǎn):

          1)對線程的支持較差。Allegro 的許多函數(shù)是非線程安全的,不能同時在兩個以上的線程中使用。

          2)對硬件加速能力的支持不足,在設(shè)計上沒有為硬件加速提供接口。

          2.4 Mesa3D

          Mesa3D 是一個兼容 OpenGL 規(guī)范的開放源碼函數(shù)庫,是目前 Linux 上提供專業(yè)三維圖形支持的惟一選擇。Mesa3D 同時也是一個跨平臺的函數(shù)庫,能夠運(yùn)行在 X Window、X Window with DGA、BeOS、Linux SVGALib 等平臺上。

          2.5 DirectFB

          DirectFB 是專注于 Linux FrameBuffer 加速的一個圖形庫,并試圖建立一個兼容 GTK 的 GUI 系統(tǒng)。它以可裝載函數(shù)庫的形勢提供對加速 FrameBuffer 驅(qū)動程序的支持。目前,該函數(shù)庫正在開發(fā)之中(最新版本 0.9.97),詳情可見 http://www.directfb.org/。

          3 面向Linux 系統(tǒng)的

          3.1 MicoroWindows/NanoX

          MicroWindows(http: //microwindows.censoft.com)是一個開放源碼的項(xiàng)目,目前由美國 Century Software 公司主持開發(fā)。該項(xiàng)目的開發(fā)一度非?;钴S,國內(nèi)也有人參與了其中的開發(fā),并編寫了 GB2312 等字符集的支持。但在 Qt/Embedded 發(fā)布以來,該項(xiàng)目變得不太活躍,并長時間停留在 0.89Pre7 版本??梢哉f,以開放源碼形勢發(fā)展的 MicroWindows 項(xiàng)目,基本停滯。

          MicroWindows 是一個基于典型客戶/服務(wù)器體系結(jié)構(gòu)的 GUI 系統(tǒng),基本分為三層。最底層是面向圖形輸出和鍵盤、鼠標(biāo)或觸摸屏的驅(qū)動程序;中間層提供底層硬件的抽象接口,并進(jìn)行窗口管理;最高層分別提供兼容于 X Window 和 Windows CE(Win32 子集)的 API。

          該項(xiàng)目的主要特色在于提供了類似 X 的客戶/服務(wù)器體系結(jié)構(gòu),并提供了相對完善的圖形功能,包括一些高級的功能,比如 Alpha 混合,三維支持,TrueType 字體支持等。但需要注意的是,MicroWindows 的圖形引擎存在許多問題,可以歸納如下:

          1)無任何硬件加速能力。

          2)圖形引擎中存在許多低效算法,同時未經(jīng)任何優(yōu)化。比如在直線或者圓弧繪圖函數(shù)中,存在低效的逐點(diǎn)判斷剪切的問題。

          3)代碼質(zhì)量較差。由于該項(xiàng)目缺少一個強(qiáng)有力的核心代碼維護(hù)人員,因此代碼質(zhì)量參差不齊,影響整體系統(tǒng)穩(wěn)定性。這也是 MicroWindows 長時間停留在 0.89Pre7 版本上的原因。

          MicroWindows 采用 MPL 條款發(fā)布(該條款基本類似 LGPL 條款)。

          3.2 OpenGUI

          OpenGUI(http://www.tutok.sk/fastgl/)在 Linux 系統(tǒng)上存在已經(jīng)很長時間了。最初的名字叫 FastGL,只支持 256 色的線性顯存模式,但目前也支持其他顯示模式,并且支持多種操作系統(tǒng)平臺,比如 MS-DOS、QNX 和 Linux 等等,不過目前只支持 x86 硬件平臺。OpenGUI 也分為三層。最低層是由匯編編寫的快速圖形引擎;中間層提供了圖形繪制 API,包括線條、矩形、圓弧等,并且兼容于 Borland 的 BGI API。第三層用 C++ 編寫,提供了完整的 GUI 對象集。

          OpenGUI 采用 LGPL 條款發(fā)布。OpenGUI 比較適合于基于 x86 平臺的實(shí)時系統(tǒng),可移植性稍差,目前的發(fā)展也基本停滯。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux相關(guān)文章:linux教程




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();