<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式Linux系統圖形及圖形用戶(hù)界面

嵌入式Linux系統圖形及圖形用戶(hù)界面

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

當然,因為不同的顯示芯片具有不同的加速能力,對memio 的使用和定義也各自不同,這時(shí),就需要針對加速芯片的不同類(lèi)型來(lái)編寫(xiě)實(shí)現不同的加速功能。比如大多數芯片都提供了對矩形填充的硬件加速支持,但不同的芯片實(shí)現方式不同,這時(shí),就需要針對不同的芯片類(lèi)型編寫(xiě)不同的用來(lái)完成填充矩形的函數。

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

1.4 LibGGI

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

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

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

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

2.2 SDL

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

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

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

2.3 Allegro

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

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

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

2.4 Mesa3D

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

2.5 DirectFB

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

3 面向Linux 系統的

3.1 MicoroWindows/NanoX

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

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

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

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

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

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

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

3.2 OpenGUI

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

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

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

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




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>