崛起中的移動圖形
在過去的幾年里,我們看到了如何把通信和計算能力封裝在一個小到可以放入口袋的設備中的巨大變化。同時,這些設備的可視能力也有了很大發(fā)展:人們可以使用它拍攝像片和視頻,并且更為重要的是對于圖形來說,顯示屏能夠以交互的速率放映高質量的彩色圖像。
在采用微處理器對電池消耗和電池性能進行管理,以及移動設備的圖形能力這兩個方面都取得巨大進步的同時,桌面計算機繼續(xù)在帶給終端用戶多媒體體驗方面領先一步。盡管如此,在未來的幾年里,這種情況將會發(fā)生改變。
移動圖形應用
在移動設備中,哪一種圖形應用更合適?在桌面計算機中,游戲、娛樂和計算機輔助設計推動著圖形的發(fā)展。因為效能和功率的限制,在不遠的將來設計出能夠在移動設備上運行的新的賽車游戲是不太可能的。盡管如此,交互式的娛樂內容,比如游戲、卡通動畫和諸如此類的東西將可能推動移動設備圖形的發(fā)展,這和桌面的情況是一樣的。盡管單靠圖形本身不能完全表達游戲的許多引人注目的特性,但是它們能夠潤色游戲,使本來有趣和好玩的游戲變得更具吸引力和令人陶醉。
能量是根本的障礙
雖然有很大的進步,移動終端的能力在很多方面仍然無法和桌面計算機相比。它們的運行速度較低,顯示屏的尺寸較小,顯示分辨率較低,運行和存儲程序的內存較小,并且只能短時間使用這個設備,因為電池最終要耗盡。造成這些差異的根本原因是能量:桌面計算機的能量來自于電源插座,而移動設備只能使用電池供給能量。
盡管如此,移動設備也在發(fā)展。摩爾定律將使移動設備具有更大的處理能力,更大的內存和存儲空間。雖然電池技術的進步沒有遵從摩爾定律(每年大約只提高10%),Gene Frantz定律表明,集成電路的功耗呈指數下降,從而使電池的持續(xù)時間也隨之延長。
無論如何,移動終端已經在很多方面等同或優(yōu)于10或15年前的家庭電腦。特別值得一提的是,在移動設備上實現一些計算機圖形能力是可以做到的,盡管現在仍處于起步階段。
演變過程中的啟示
為了適應移動設備,傳統(tǒng)的圖形硬件需要改進提高,但是根本的性能提高不會太大。圖形工作站已經存在至少20年了,工程師已經花費了很多時間學習和研究相關技術。因此,在這方面已經沒有太大的必要像探索未知領域一樣進行創(chuàng)造性的工作。適合桌面計算機的很多東西并不適合于移動設備,因為桌面計算機體積太大、價格太貴、耗電太多。但是,桌面系統(tǒng)的一些方法可以通過改進變成一個可用于移動設備的簡化版本。另外,桌面系統(tǒng)中高質量的圖形效果,已經提高了用戶對圖形質量的期望值,無形中也提高了用戶對體驗移動設備圖形質量的期望值。
在軟件方面,工業(yè)領域所作的工作可以用非常神奇來形容,它們即使在慢速的桌面設備上,也知道通過如何挖掘圖形硬件的一點一滴性能來創(chuàng)建滿意的圖形效果。盡管如此,為保證圖形軟件和硬件引擎、圖形內容和圖形應用的快速發(fā)展,針對圖形開發(fā)的圖形標準是十分必要的。容易得到的、易學易用的、可接受的圖形標準將會促進移動應用的開發(fā)。
制定標準
在現有的開發(fā)中,有幾個適合移動圖形的標準。其中一些是應用程序接口(API),一些是表示多邊形、圖像和動畫內容的文件格式,還有一些是兩者的組合。
可變矢量圖形(SVG)是一個表示2D分層動畫的文件格式標準。SVG支持高質量的2D幾何原始形狀,比如Bezier曲線、構成那些曲線的任意多邊形、各種屬性和風格的線段,還有后加工和過濾處理。原始的SVG對于移動設備來說太龐大,因此創(chuàng)建了它的子集。SVG Tiny 是一個針對像移動電話等受限設備的緊湊子集,而SVG Basic是一個針對靈巧電話和PDA的稍微大一點的子集。在3GPP修訂版本5中,SVG Tiny已經被選定作為MMS(多媒體信息系統(tǒng))的一部分。因此,將最終能夠在移動電話中發(fā)送和接收2D動畫的矢量圖形信息。
OpenGL是一個流行的跨平臺的3D圖形編程API,我們在圖形工作站和PC機上非常熟悉。在過去的10年里,OpenGL發(fā)生了一些變化,但仍保留了它的所有基本特性,其中的一些現在看來是多余的。還有很多特性實際當中很少使用。包括Nokia 和 ARM在內的許多公司正在同Khronos合作開發(fā)OpenGL ES,一個針對嵌入式系統(tǒng)的子集。目標是刪除API中不必要的和很少使用的組件,修改它使其更多的考慮移動設備的實際情況,比如缺少專用的浮點硬件(對使用ARM矢量浮點協(xié)處理器內核的硬件是個例外)和有限的內存容量(包括RAM和ROM)。有一個針對移動設備的低級直接模式的API標準,對于移動圖形硬件的開發(fā)也是有好處的,因為它提供了一個硬件和軟件驅動都應該支持的最小化功能集合。
低級圖形API允許開發(fā)者更低層地接近硬件,在諸如交互式游戲的開發(fā)中獲得更高的性能。然而,對于第三方的開發(fā)者要想利用這些API,必須開放移動設備的操作系統(tǒng),允許用戶開發(fā)和安裝新的應用。盡管形勢正在快速的變化之中,但是傳統(tǒng)的諸如移動電話等嵌入式設備在這一點上是不開放的,因為Symbian OS和Java ME(Micro Edition)等開放式應用平臺獲得了很大發(fā)展。除了致力于OpenGL ES的開發(fā),它是一個特別適合于Symbian OS平臺上運行的圖形API;諾基亞正在領導著針對Java ME平臺的3D API 規(guī)范JSR-184的開發(fā)。
如果移動設備是資源受限的,運行在Java ME平臺上的程序使用的資源是較少的。Java ME程序能夠比所謂的原始程序(C 、C++ 和匯編語言)使用更少的內存,無論是在動態(tài)的運行情況還是在存儲程序的靜態(tài)情況。同時,Java程序需要較多的運行開銷。因此,需要大量的附加功能,比如一個情景圖表表示了對象的結構,它們的外觀和觀看這個情景的快照,還有激活對象的機制和它們的屬性。更高層次的API意味著較少的功能調用,因此,執(zhí)行時間的很大部分將耗費在臨界速度的內部循環(huán)上,它是以C、匯編或專用硬件實現的圖形驅動。同時,更高層次的庫函數具有更多的功能,這些功能不同的應用可以重復使用,這些應用本身也變得很小。JSR-184是OpenGL ES的補充:它們的描述模式是兼容的,因此,針對OpenGL ES的專用圖形加速硬件,同樣也可以加速JSR-184。
SVG是文件格式和針對動畫的,OpenGL ES是一個低級的編程API,JSR-184可以認為是兩者的組合。必須承認這樣的事實,大多數的圖形內容不是由編程者創(chuàng)造出來,而是由圖形藝術家完成的。JSR-184標準定義了它自己的二進制(因此變得緊湊)文件格式,這種格式的文件很容易被調入,從而產生情景圖表。簡單的內容幾乎不需要編程,但是因為Java是一個完全的編程語言,它的API調用提供了訪問情景圖表組件的方法,可以編寫任意復雜的程序來操縱從文件中裝載的圖形對象。
移動性帶來的好處
在計算性能方面,移動設備和桌面計算機相比處于劣勢,但移動設備也有一些重要的優(yōu)點。很明顯,移動設備能夠伴隨你旅行,這意味著它總是可以得到的,而不是像桌面計算機那樣必須放在辦公室或手提箱里,很不方便。也可以隨時使用移動設備玩游戲打發(fā)時間,或網上沖浪等等。移動設備可以使人們在需要的時候獲取信息。例如,導航功能能夠產生所在地周圍環(huán)境的3D畫面,并指示方向。當想要和朋友開始一個特別的游戲比賽,對抗另外一支遠方的隊伍,而這時你正在酒吧休閑,這時移動平臺會幫你大忙。
在未來,移動設備在一些圖形應用方面會變成一個更好更便利的平臺。在現實中,通過增加或變換人體周圍物體的外觀,一個人的感覺(特別是視覺)將被擴大。如果擴大的現實真的能夠實現,提供這種功能的移動設備必須時刻伴隨在你的身邊,而不是被迫進入到擴大的現實。其中核心的部件,如照相機、計算單元和顯示部分已經能夠在一個緊湊的移動設備中得到。大約10年以后,我們中的一些人將能夠手里拿著自己的個人“全息駕駛艙” 漫步,這并不是不可想象的事情。■ (于永學譯)
c++相關文章:c++教程
評論