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