1. 程式人生 > >支援3D的FireFox1.5

支援3D的FireFox1.5

Gecko + Cairo:Firefox 未來的顯示輸出架構

眾所周知,Gecko是Firefox(Mozilla)的輸出引擎,一般習慣於稱之為核心。其效能直接決定了瀏覽器的效率。伴隨著Firefox 1.1推出日期的臨近,一項新的東西走入了人們的視野,Cairo. 本文簡單介紹一下Gecko和 Cairo,更深入的內容,請參考網上專業教程。

1、什麼是Cairo?

Cairo,過去叫做Xr或Xr/Xc,是一個跨平臺的開放原始碼的向量圖形函式庫,可以提供高質量的顯示和列印輸出。通過Glitz函式庫, Cairo 能使用 OpenGL或X Render擴充套件的硬體加速功能來繪製圖像,這使得基於Cairo的應用能在現代化的3D顯示硬體上獲得益處。

Cairo提供一個穩定的使用者層API,它可以提供現代化的圖形處理管理能力,如繪製和填充,對映轉換,合成(注意,是合成)與改變alpha半透明影象,高真文字顯示等等。能夠在不同的媒體上實現相同的輸出。

其實更早關於Cairo人們關注的還是Gtk/Gnome的進展,我們可以在 Gnome中國 上看到對Cairo應用前景的展望,可以看到,Cairo應用可以實現的東西是激動人心的。

Cairo擁有多種不同的後端,能夠支援多種輸出裝置。現在所支援的後端包括:

影象:以記憶體影象緩衝區(in-memory image buffers)為目標。該影象緩衝區可被儲存成檔案,或者其資料可以被不具有本地後端的圖形系統呼叫。

gl: 通過 glitz庫(http://www.freedesktop.org/Software…製圖像。包括GLX 和 AGL (分別為Unix和蘋果的標準)。

png: 這個後端使用影象後端來生成png影象檔案。

ps: 生成一個PostScript檔案,適合高質量列印輸出。現在ps後端生成點陣內容,連線影象後端。

xlib: 使用X Window的xlib介面,以Windows 或 Pixmaps 為目標。Render擴充套件可用,但不必需。

xcb: 和xlib相似,但使用XCB(http://freedesktop.org/Software/xcb)介面。

還有其他一些後端正在開發中:

pdf

svg

quartz——MacOS的後端(http://cairographics.org/QuartzBackend)

win32——Windows GDI 後端(http://cairographics.org/win32)

2、Gecko使用Cairo有什麼好處?

可能上面的Gnome展望會令你感到難忘,其實,Cairo在Mozilla上使用的前景同樣值得期待。

比如,你的Firefox的CPU佔用率是否經常達到100%?實際上很大原因就是因為目前Firefox的Gecko引擎生成頁面的方式並不是那麼有效率,它的高速度很大程度上依賴於CPU的開銷。而通過Cairo可以實現的硬體加速,Gecko就可以把大部分的顯示工作交給顯示卡(GPU)來完成。這樣一來,Gecko在那些有3D顯示卡的機器上是非常高效的。(當然,它不會把你的小貓變成100M專線) :108:

不僅僅是這些,按照 roc 的說法,轉移到Cairo上,將會“帶給我們現代化的2D圖形處理能力(如填充、描旁、去背、對映轉換,alpha透明支援等)」。Cairo可以將它的輸出傳送到不同的後端,這使它很適合在螢幕上顯示影象和列印。藉助Glitz函式庫,Cairo能使用 OpenGL的硬體加速功能來繪製圖像,這使得 Mozilla能在現代化的3D顯示卡上獲得益處。

為了實現上述目標,Mozilla需要去除軟體中大量的圖形程式碼,把它們重新構建於 Cairo之上。目前,這一工作正在有條不紊地進行著。在 roc的blog 裡面有一篇文章,介紹了Mozilla的圖形處理基礎架構轉換到Cairo的最新進度,其中所附的Mozilla截圖便是以Cairo來生成網頁以及本身的XUL使用者介面。(尚處於開發測試階段)

3、cairo在 Gecko 上實現的路線圖:

首先是cairo在 Gecko 1.8/Firefox 1.1中的實現:

canvas 和 SVG的實現將基於cairo

沒有硬體加速;只用軟體方式實現render-to-bitmap

非cairo的SVG實現方式(例如GDI+)仍會被支援

Windows上cairo的實現將隨進度而定

非canvas,非SVG利用現有的平臺API實現。

如圖,Cairo的運用只是部分的。如Windows平臺對於SVG的實現就被排除。

其次是cairo 在 Gecko 1.9 中的實現:

停止使用2D API, 使用cairo來實現所有內容。

解決foreignObject問題

實現HTML顯示的硬體加速

更高的質量(比如,雙線性影象掃描)

如圖所示,Cairo在Gecko 1.9中將得到完全的實現。

現在Mozilla的路線圖指向2.0,這是一個非常長遠和有規劃的專案。或許,伴隨著Gecko 1.9或更高版本效能的不斷提升,你會在不遠的將來看到一個完全不一樣的Mozilla. Mozilla基金會運作規範,工作高效。是開源軟體組織中難得的典範。