跨平臺渲染引擎的制作方法
【專利摘要】一種跨平臺渲染引擎??缙脚_渲染引擎充當(dāng)應(yīng)用與操作系統(tǒng)之間的中介,以用于將應(yīng)用內(nèi)容顯示在屏幕上,從而允許軟件開發(fā)者編寫與平臺無關(guān)的應(yīng)用代碼。應(yīng)用以描述待顯示的內(nèi)容的資源高效的內(nèi)容描述的形式將內(nèi)容發(fā)送至跨平臺渲染引擎。進(jìn)而,跨平臺渲染引擎存儲內(nèi)容描述,并且根據(jù)需要將根據(jù)內(nèi)容描述所生成的光柵化的圖像提供至合成器。在對應(yīng)于合成器所需要的紋理的內(nèi)容描述不可用的情況下,跨平臺渲染引擎從應(yīng)用中拉取出內(nèi)容描述。通過代表應(yīng)用從用戶界面線程產(chǎn)生經(jīng)光柵化的圖像而不是等待應(yīng)用線程,跨平臺渲染引擎改進(jìn)應(yīng)用的整體響應(yīng)性,并且?guī)砀玫挠脩趔w驗。
【專利說明】
跨平臺渲染引擎
【背景技術(shù)】
[0001]在多個平臺上可用的軟件產(chǎn)品(S卩,跨平臺產(chǎn)品)比單平臺產(chǎn)品提供更大的用戶基數(shù)。軟件開發(fā)者通常想要提供跨那些平臺的一致的用戶體驗(即,外觀和感覺),以使得熟悉一個平臺上的軟件產(chǎn)品的用戶將立即對另一個平臺上的相同的軟件產(chǎn)品感到舒服。
[0002]用于在屏幕上顯示內(nèi)容的機制在運行不同操作系統(tǒng)的平臺間大不相同。例如,一些桌面操作系統(tǒng)不包括用于將來自不同的應(yīng)用的內(nèi)容在桌面上進(jìn)行合成(即,組合)的功能。相反,每個應(yīng)用都負(fù)責(zé)創(chuàng)建并更新屏幕圖像,并且使圖像被顯示。盡管一些操作系統(tǒng)提供了合成內(nèi)容以供顯示的方式,但每個操作系統(tǒng)都具有其自身獨特的方式來完成該任務(wù)。該不一致性要求軟件開發(fā)者學(xué)習(xí)如何與軟件產(chǎn)品所移植至的每個不同的操作系統(tǒng)進(jìn)行接入口 O
[0003]除了簡單地需要軟件開發(fā)者學(xué)習(xí)圖形功能的特定于平臺的實現(xiàn),實現(xiàn)差異還可以需要大體上重寫代碼,目的是復(fù)制不同平臺上的用戶體驗。每次重寫都產(chǎn)生引入新的錯誤的可能性,并且需要額外的質(zhì)量保證測試。當(dāng)操作系統(tǒng)不提供所需要的功能或者與所期望的不同地執(zhí)行功能時,在該平臺上提供一致的用戶體驗可能是不切實際的(如果不是不可能的)。
[0004]即使當(dāng)功能被復(fù)制時,應(yīng)用可能在效率和響應(yīng)性方面而在各種平臺之間不同。這可以是以下因素所造成的,例如:軟件開發(fā)者對每個操作系統(tǒng)的熟悉度和經(jīng)驗的水平的不同、在各種操作系統(tǒng)上可用的組成功能的優(yōu)勢和劣勢的不同、以及硬件定時約束的不同。
[0005]歷史上,在一些應(yīng)用中,用戶界面線程一直負(fù)責(zé)應(yīng)用的所有功能,包括:對應(yīng)用邏輯和規(guī)則進(jìn)行應(yīng)用、處理對應(yīng)用的輸入、以及向用戶呈現(xiàn)應(yīng)用內(nèi)容。應(yīng)用的響應(yīng)性至少部分地基于用戶界面線程多快速地處理輸入并渲染對應(yīng)用內(nèi)容的改變。當(dāng)由用戶界面線程來處理光柵化時,如果當(dāng)需要內(nèi)容更新時用戶界面線程繁忙,則應(yīng)用將出現(xiàn)未響應(yīng),這是因為直到用戶界面線程完成其當(dāng)前的任務(wù)為止才能進(jìn)行光柵化。為了處理與觸摸屏相關(guān)聯(lián)的增加的處理要求,已經(jīng)創(chuàng)建了專用應(yīng)用線程來將應(yīng)用響應(yīng)性與驅(qū)動用戶界面的代碼進(jìn)行去耦入口 ο
[0006]對應(yīng)用內(nèi)容進(jìn)行渲染以供顯示仍然是由應(yīng)用線程來控制的,并且不受益于該分離。如果當(dāng)需要渲染時應(yīng)用線程忙于對應(yīng)用內(nèi)容執(zhí)行操作,則將渲染將會被延遲直至操作完成為止。如果應(yīng)用的部分移動到還沒有被實現(xiàn)(即,渲染或更新)的屏幕的部分中,則應(yīng)用可能被視為未響應(yīng)。當(dāng)應(yīng)用線程沒有在初始觸摸輸入的幾幀內(nèi)對應(yīng)用內(nèi)容進(jìn)行光柵化時,可能發(fā)生這種情況。例如,在一個操作系統(tǒng)中,應(yīng)當(dāng)注意的是,如果應(yīng)用線程沒有在通過滑動一個人的手指而發(fā)起拖動(pan)的大約四幀內(nèi)對應(yīng)用內(nèi)容進(jìn)行光柵化,則應(yīng)用開始出現(xiàn)未響應(yīng)。始終保證來自應(yīng)用線程的該水平的響應(yīng)性是困難的。
[0007]隨著更新和補丁的開發(fā),這些問題在軟件產(chǎn)品的整個使用壽命期間繼續(xù)。關(guān)于這些和其它考慮而進(jìn)行了本發(fā)明。盡管已經(jīng)討論了相對具體的問題,但應(yīng)當(dāng)理解的是,在本文中所公開的實施例不應(yīng)該限于解決在【背景技術(shù)】中所標(biāo)識的具體問題。
【發(fā)明內(nèi)容】
[0008]提供了該
【發(fā)明內(nèi)容】
以用簡化的形式介紹在下文的【具體實施方式】部分中所進(jìn)一步描述的概念的選擇。該
【發(fā)明內(nèi)容】
不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或本質(zhì)特征,也不旨在作為幫助用來確定所要求保護(hù)的主題的范圍。
[0009]實施例提供了渲染并顯示用戶界面和內(nèi)容項目的計算機生成的顯示組件的系統(tǒng)。該系統(tǒng)包括能夠經(jīng)由屏幕以圖形向用戶顯示應(yīng)用內(nèi)容的計算設(shè)備??缙脚_渲染引擎充當(dāng)在生成內(nèi)容的應(yīng)用與在屏幕上顯示內(nèi)容的合成器之間的中介??缙脚_渲染引擎允許應(yīng)用功能跨各種平臺的一致的實現(xiàn),這進(jìn)而得到一致的用戶體驗。
[0010]除了在由合成器所維持和顯示的表面上直接繪制內(nèi)容,應(yīng)用還可以向跨平臺渲染引擎繪制內(nèi)容描述。內(nèi)容描述是原始的應(yīng)用內(nèi)容與在屏幕上顯示的經(jīng)光柵化的紋理之間的中間表示。每個內(nèi)容描述都描述如何繪制應(yīng)用內(nèi)容的不同的片段(例如,矩形)以及那些不同的片段之間的關(guān)系??缙脚_渲染引擎的實施例將這些描述轉(zhuǎn)換成特定于平臺的顯示組件以供在屏幕上呈現(xiàn)??缙脚_渲染引擎的實施例可以代表應(yīng)用來控制和操縱對中間表示的渲染,以提供額外的功能并創(chuàng)建更積極響應(yīng)的應(yīng)用。
[0011]當(dāng)應(yīng)用提供內(nèi)容描述而不是應(yīng)用內(nèi)容的經(jīng)光柵化的圖像本身時,跨平臺渲染引擎可以提供更大的價值。這是因為內(nèi)容描述在資源使用方面比對應(yīng)的經(jīng)光柵化的圖像便宜得多,跨平臺渲染引擎能夠與紋理所保存的相比存儲更多的應(yīng)用內(nèi)容的表示,這允許跨平臺渲染引擎在許多實例中對用戶交互進(jìn)行響應(yīng),而不是調(diào)用回到應(yīng)用。這提供了顯著的機會來在對應(yīng)用內(nèi)容進(jìn)行渲染時增加性能,并且改進(jìn)應(yīng)用的響應(yīng)性。
[0012]為了以及時的方式顯示內(nèi)容以使得應(yīng)用保持對用戶響應(yīng)并且最小化在接收到用戶輸入與對屏幕進(jìn)行更新之間的用戶可感知的延遲的量,跨平臺渲染引擎包括在不同的處理線程上運行的組件,所述在不同的處理線程上運行的組件包括在應(yīng)用線程上運行的前端以及在用戶界面線程上運行的后端。應(yīng)用線程是負(fù)責(zé)應(yīng)用的主要功能的處理線程。應(yīng)用與跨平臺引擎之間的交互在應(yīng)用線程上進(jìn)行。用戶界面線程是對來自合成器的請求進(jìn)行響應(yīng)并且創(chuàng)建包含應(yīng)用內(nèi)容的顯示層的處理線程,其中,顯示圖像(例如,位圖)被加入所述顯示層中??缙脚_渲染引擎所提供的效率和響應(yīng)性是通過使用所存儲的內(nèi)容描述并且使用拉取模型來從應(yīng)用中獲取內(nèi)容而達(dá)成的。當(dāng)區(qū)域需要視覺更新時,后端從應(yīng)用中拉取出更新,而不是使應(yīng)用向合成器推送更新。
【附圖說明】
[0013]通過參考以下附圖,本公開的進(jìn)一步的特征、方面、和優(yōu)點將變得更好地被理解,其中,元素不成比例以便更清楚地示出細(xì)節(jié),并且其中,幾個視圖通篇中相同的附圖標(biāo)記指代相同的元素。
[0014]圖1是用于渲染并顯示用戶界面和內(nèi)容項目的計算機生成的顯示組件的系統(tǒng)的一個實施例的框圖。
[0015]圖2是示出了適用于實現(xiàn)跨平臺渲染引擎的系統(tǒng)的一個實施例的高級系統(tǒng)架構(gòu)圖。
[0016]圖3是示出了跨平臺渲染引擎與應(yīng)用之間的交互的一個實施例的流程圖。
[0017]圖4A-D示出了針對包含三個內(nèi)容描述的內(nèi)容描述合成的內(nèi)容描述協(xié)調(diào)的示例。
[0018]圖5A示出了在給定具有多個虛擬紋理的文檔中的經(jīng)選擇的預(yù)取邊界的情況下,可用于進(jìn)行緩存的虛擬紋理內(nèi)容描述的示例。
[0019]圖5B示出了在給定具有由多個瓦片組成的單個虛擬紋理的文檔中的經(jīng)選擇的預(yù)取邊界的情況下,可用于進(jìn)行緩存的虛擬紋理內(nèi)容描述的示例。
[0020]圖6A示出了使用常規(guī)混合模式而根據(jù)內(nèi)容描述來渲染的應(yīng)用內(nèi)容的示例。
[0021]圖6B示出了在沒有常規(guī)混合模式支持的情況下所得出的虛擬紋理。
[0022]圖7A示出了使用下逆混合模式而根據(jù)內(nèi)容描述來渲染的應(yīng)用內(nèi)容的示例。
[0023]圖7B示出了在沒有下逆模式支持的情況下所得出的虛擬紋理。
[0024]圖8A示出了使用逆混合模式而根據(jù)內(nèi)容描述來渲染的應(yīng)用內(nèi)容的示例。
[0025]圖SB示出了在沒有逆模式支持的情況下所得出的虛擬紋理。
[0026]圖9是跨平臺渲染引擎方法的一個實施例的高級流程圖。
[0027]圖10是示出了可以利用其實踐本發(fā)明的計算設(shè)備的物理組件的一個實施例的框圖。
[0028]圖1lA和IlB是可以利用其實踐本發(fā)明的實施例的移動計算設(shè)備的簡化的框圖。
【具體實施方式】
[0029]參考形成了本文的一部分并且示出了具體的示例性實施例的附圖以在下文中更加充分地描述了各種實施例。然而,實施例可以以不同的形式來實現(xiàn),并且不應(yīng)該被理解為限于在本文中所闡述的實施例;相反,提供了這些實施例以使得該公開將是徹底的和完整的,并且將會向本領(lǐng)域技術(shù)人員完全傳達(dá)實施例的范圍。實施例可以被實踐為方法、系統(tǒng)、或設(shè)備。從而,實施例可以采取硬件實現(xiàn)、完全軟件實現(xiàn)、或組合了軟件和硬件方面的實現(xiàn)的形式。因此,以下的詳細(xì)描述將不被理解為限制意義。
[0030]在本文中描述并在附圖中示出了跨平臺渲染引擎的各種實施例??缙脚_渲染引擎充當(dāng)應(yīng)用與操作系統(tǒng)之間的中介,以用于存儲描述應(yīng)用內(nèi)容的指令,從而允許軟件開發(fā)者編寫與平臺無關(guān)的應(yīng)用代碼。應(yīng)用將內(nèi)容以內(nèi)容描述的形式發(fā)送至跨平臺渲染引擎,其中,所述內(nèi)容描述可以用于對應(yīng)用內(nèi)容的經(jīng)光柵化的圖像進(jìn)行渲染以供顯示。在與合成器所需要的紋理相對應(yīng)的內(nèi)容描述不可用的情況下,跨平臺渲染引擎從應(yīng)用中拉取出內(nèi)容描述??缙脚_渲染引擎可以代表應(yīng)用根據(jù)用戶界面線程上的內(nèi)容描述來對圖像進(jìn)行光柵化,而不是等待應(yīng)用線程,這改進(jìn)了應(yīng)用的整體響應(yīng)性并帶來更好的用戶體驗??缙脚_渲染引擎的實施例可以通過在將經(jīng)光柵化的圖像渲染至合成器之前代表應(yīng)用對所存儲的內(nèi)容描述進(jìn)行操縱,來改變應(yīng)用內(nèi)容的外觀。
[0031]圖1是用于渲染并顯示用戶界面和內(nèi)容項目的計算機生成的顯示組件的系統(tǒng)的一個實施例的框圖。系統(tǒng)100包括能夠經(jīng)由屏幕104以圖形向用戶顯示應(yīng)用內(nèi)容的計算設(shè)備102。合適的計算設(shè)備的示例包括但不限于,臺式計算機、膝上型計算機、平板或平面計算機、智能電話、以及智能家電。在各種實施例中,屏幕還可以包括用于從用戶處經(jīng)由觸筆(例如,用戶的手指或數(shù)字筆)而接收觸摸輸入的數(shù)字轉(zhuǎn)換器。
[0032]在顯示表面104上顯示示例軟件應(yīng)用用戶界面和示例相關(guān)聯(lián)的用戶內(nèi)容。用戶界面106(即,應(yīng)用)示出了多種軟件應(yīng)用所支持的用戶界面和相關(guān)聯(lián)的用戶內(nèi)容,所述多種軟件應(yīng)用包括但不限于,文字處理應(yīng)用、電子表格應(yīng)用、幻燈片演示應(yīng)用、電子郵件應(yīng)用、筆記本應(yīng)用、以及日歷應(yīng)用。即,用戶界面106示出了可以被顯示到計算機支持的顯示表面104上以用于根據(jù)相關(guān)聯(lián)的軟件應(yīng)用功能進(jìn)行查看和使用的圖形顯示組件中的任何一個組件。用戶界面106示出了具有多個控件108、服務(wù)窗格110、以及用戶內(nèi)容顯示區(qū)域112的文字處理應(yīng)用用戶界面。應(yīng)當(dāng)理解的是,所示出的用戶界面106僅僅是出于示例的目的,而不是對可以根據(jù)在本文中所描述的發(fā)明的實施例而顯示和管理的大量和多種類型的圖形顯示元件的限制。
[0033]跨平臺渲染引擎120示出了將特定于平臺的請求和響應(yīng)映射至與平臺無關(guān)的請求和響應(yīng)的軟件應(yīng)用。這些請求和響應(yīng)用于在計算機支持的顯示表面104上呈現(xiàn)軟件應(yīng)用用戶界面(UI)的顯示組件(例如,按鈕、控件、搜索功能、幫助功能、菜單、或者工具條)以及用戶內(nèi)容(例如,文本、文檔、照片、圖片、或表格)。為了方便起見,軟件應(yīng)用用戶界面的顯示組件和由應(yīng)用所消耗的用戶內(nèi)容單獨地或共同被稱為應(yīng)用內(nèi)容。
[0034]跨平臺渲染引擎充當(dāng)生成內(nèi)容的應(yīng)用與在屏幕上顯示內(nèi)容的合成器之間的中介。跨平臺渲染引擎120支持對應(yīng)用內(nèi)容的描述(如內(nèi)容描述122)的創(chuàng)建,其中可以使用特定于平臺的命令來根據(jù)所述內(nèi)容描述來創(chuàng)建顯示圖像(例如,表示各種顯示組件的位圖)。這允許在不同的平臺上重新使用用于繪制應(yīng)用內(nèi)容的應(yīng)用代碼而不對其進(jìn)行修改,或者在一些情況下,進(jìn)行與編寫特定于平臺的應(yīng)用代碼相比有限的修改。另外,跨平臺渲染引擎120可以可操作以代表應(yīng)用來操縱顯示層并且重新渲染應(yīng)用內(nèi)容。跨平臺渲染引擎允許跨各種平臺的應(yīng)用功能的一致的實現(xiàn),這進(jìn)而產(chǎn)生一致的用戶體驗。
[0035]內(nèi)容描述是原始的應(yīng)用內(nèi)容與在屏幕上所顯示的紋理(S卩,光柵圖像)之間的中間表示。除了在由合成器所維持和顯示的表面上直接繪制內(nèi)容,應(yīng)用還可以以內(nèi)容描述的形式向跨平臺渲染引擎進(jìn)行繪制。每個內(nèi)容描述都描述如何繪制應(yīng)用內(nèi)容的不同的片段(例如,矩形)以及那些不同的片段之間的關(guān)系??缙脚_渲染引擎將這些描述轉(zhuǎn)換成特定于平臺的顯示組件以供在屏幕上呈現(xiàn)。在各種實施例中,內(nèi)容描述可以是特定于平臺的或與平臺無關(guān)的。例如,可以將內(nèi)容描述編寫為特定于平臺的圖形庫命令的序列(例如,Direct2D或Direct3D命令列表)、與平臺無關(guān)的向量圖形描述(例如,路徑)、或者特定于平臺或與平臺無關(guān)的內(nèi)容描述語言、對象、或結(jié)構(gòu)。
[0036]因為內(nèi)容描述是可以根據(jù)其來渲染應(yīng)用內(nèi)容的對應(yīng)用內(nèi)容的描述,而不是應(yīng)用內(nèi)容的經(jīng)光柵化的圖像本身,因此所述內(nèi)容描述在資源使用方面是便宜的。在大多數(shù)實例中,內(nèi)容描述比它們表示的對應(yīng)的紋理內(nèi)容消耗顯著較少的資源。對于例如但不限于文字處理應(yīng)用、電子表格應(yīng)用、演示應(yīng)用、電子郵件客戶端、日歷應(yīng)用、任務(wù)管理應(yīng)用、以及網(wǎng)絡(luò)瀏覽器應(yīng)用的應(yīng)用而言,給定的文檔中的大多數(shù)內(nèi)容都足夠簡單,以使得內(nèi)容描述在存儲器使用方面比對應(yīng)的紋理內(nèi)容高效大約50倍到大約100倍之間。利用內(nèi)容描述所高效處理的簡單內(nèi)容的示例通常包括但不限于文本運行、路徑(即,向量圖形)、以及小圖標(biāo)/圖(例如,低分辨率和/或顏色深度光柵圖像)。由于內(nèi)容描述是資源高效的,因此跨平臺渲染引擎能夠與紋理所保存的相比存儲更多的應(yīng)用內(nèi)容的表示,這允許跨平臺渲染引擎在許多實例中代表應(yīng)用對用戶交互做出響應(yīng),而不是調(diào)用回到應(yīng)用。這提供了顯著的機會來在對應(yīng)用內(nèi)容進(jìn)行渲染時增加性能,并且改進(jìn)應(yīng)用的響應(yīng)性。
[0037]額外地,將內(nèi)容描述存儲在主存儲器中而不是視頻存儲器中,由于在大多數(shù)計算設(shè)備中,視頻存儲器的存儲容量與主存儲器相比是有限的,因此這是重要的。作為結(jié)果,跨平臺渲染引擎可以與能夠由合成器所存儲的相比保存更多數(shù)量的中間表示。盡管內(nèi)容描述可以保存復(fù)雜的內(nèi)容(例如,3D圖形),但由于復(fù)雜的內(nèi)容必須在內(nèi)容描述中被引用之前進(jìn)行光柵化,并且內(nèi)容描述將簡單地引用包含光柵圖像的位圖或表面,因此效率提升幅度降低。可以將內(nèi)容描述以可視展示標(biāo)記語言(例如,可擴展應(yīng)用標(biāo)記語言(XAML))實現(xiàn)為控件。
[0038]為了以及時的方式顯示內(nèi)容以使得應(yīng)用保持對用戶響應(yīng)并且最小化在接收到用戶輸入與對屏幕進(jìn)行更新之間的用戶可感知的延遲的量,跨平臺渲染引擎包括在不同的處理線程上運行的組件,所述不同的處理線程包括應(yīng)用線程124和用戶界面線程126。盡管是以單數(shù)來描述的,但是可以使用在本文中所描述的線程中的任何線程中的多于一個線程。
[0039]應(yīng)用線程124是負(fù)責(zé)包括應(yīng)用內(nèi)容的原始生成的應(yīng)用的主要功能的處理線程。應(yīng)用與跨平臺渲染引擎之間的交互是在應(yīng)用線程上進(jìn)行的。用戶界面線程126是對來自合成器的請求進(jìn)行響應(yīng)并且創(chuàng)建包含應(yīng)用內(nèi)容的顯示層的處理線程,其中,顯示圖像(例如,位圖)被加入所述顯示層中。另外,用戶界面線程126可以假設(shè)用于處理添加至層的動畫行為(例如,移動對象、對其它對象的移動做出反應(yīng)、調(diào)整對象的大小、拖動或縮放觀察點)和/或用于改變層屬性的職責(zé)。例如,在文字處理應(yīng)用中,用戶界面線程126可以負(fù)責(zé)在顯示層上繪制文檔、將光標(biāo)置于文檔上、并且接著在光標(biāo)上設(shè)置屬性以允許光標(biāo)在文檔周圍移動。
[0040]合成器線程128是負(fù)責(zé)從用戶界面線程中接收顯示層和屬性改變的處理線程。根據(jù)一個實施例,跨平臺渲染引擎將顯示層發(fā)送至合成器130,這一起帶來了來自不同的源的視覺顯示組件(S卩,紋理),以便在虛擬紋理中創(chuàng)建組合的圖像。例如,考慮每個控件都可以是獨立的層。用戶界面線程創(chuàng)建所有這些獨立的層并且將所有控件(即,顯示組件)置于層上。用戶界面線程接著將層發(fā)送至合成器130,并且合成器將所有層一起組合成表示工具條和相關(guān)聯(lián)的按鈕/控件的虛擬紋理。
[0041]與處理大多數(shù)應(yīng)用功能的應(yīng)用線程相比,在用戶界面線程上進(jìn)行較少的處理,這允許更快地從合成器中拉取出請求。換句話說,由于職責(zé)的劃分,用戶界面線程具有更高保障的可用性,并且能夠根據(jù)需要快速地將顯示組件繪制到屏幕104上。例如,在典型的計算設(shè)備上運行的一個代表性的操作系統(tǒng)中,用戶界面線程的標(biāo)稱響應(yīng)時間小于大約50ms。相反,相同的系統(tǒng)上的應(yīng)用線程的標(biāo)稱響應(yīng)時間是大約2 O Om s。
[0042]在各種實施例中,包括操縱和渲染在內(nèi)的復(fù)雜的工作和特定于應(yīng)用的邏輯可以在用戶界面線程之外進(jìn)行,以保持用戶界面線程具有高響應(yīng)性。從而,跨平臺渲染引擎的實施例可以包括用于回放內(nèi)容描述來幫助維持用戶界面線程的響應(yīng)性的渲染線程132。將內(nèi)容描述回放移動至渲染線程阻止任何昂貴的渲染對用戶界面線程產(chǎn)生影響。換句話說,用戶界面線程將不會忙于向屏幕104繪制顯示組件,并且將更加空閑以對輸入進(jìn)行響應(yīng)并且管理來自合成器的繪制請求。
[0043]圖2是示出了適用于實現(xiàn)跨平臺渲染引擎的系統(tǒng)的一個實施例的高級系統(tǒng)架構(gòu)圖。系統(tǒng)包括實時層級202、用戶界面層級204、以及模型層級206。每個層級通常與其它層級在不同的處理空間中運行。實時層級負(fù)責(zé)在硬件級的交互,例如,接收用戶輸入以及向屏幕呈現(xiàn)應(yīng)用內(nèi)容以供顯示。用戶界面層級包括這樣的組件,其允許數(shù)據(jù)輸入(例如,用戶生成的內(nèi)容的輸入)和對應(yīng)用的功能的用戶訪問(例如,與應(yīng)用控件進(jìn)行交互),并且向用戶呈現(xiàn)數(shù)據(jù)(例如,顯示應(yīng)用內(nèi)容)。用戶界面線程126,合成器線程128、以及渲染線程132與用戶界面層級相關(guān)聯(lián)。
[0044]模型層級包括應(yīng)用模型208,所述應(yīng)用模型208顯露應(yīng)用的功能、提供應(yīng)用邏輯和業(yè)務(wù)規(guī)則(例如,如何編頁和用連字符連接)、存儲應(yīng)用內(nèi)容、并且渲染應(yīng)用內(nèi)容以供顯示。應(yīng)用線程124與模型層級相關(guān)聯(lián)??缙脚_渲染引擎包括在模型層級中運行的前端210以及在用戶界面層級中運行的后端212。同步模型214提供非同步的通信以及共享的數(shù)據(jù),這允許應(yīng)用代碼在跨不同線程的同步中保持。工作者線程提供針對應(yīng)用模型的處理。
[0045]圖3是示出了跨平臺渲染引擎與應(yīng)用之間的交互的一個實施例的流程圖。前端提供由應(yīng)用所使用的接口以生成應(yīng)用內(nèi)容的中間表示以供最終顯示。后端將該接口提供至合成器。即后端從合成器接收用于顯示應(yīng)用內(nèi)容的請求,并且通過生成應(yīng)用內(nèi)容的光柵圖像(例如,虛擬紋理)并且將虛擬紋理轉(zhuǎn)移至可以在顯示屏上呈現(xiàn)的顯示表面來進(jìn)行響應(yīng)。
[0046]應(yīng)用必須從不是用戶界面線程的線程中調(diào)用關(guān)于后端的命令。即使后端存在于(live on)用戶界面線程上,在用戶界面線程上運行的應(yīng)用代碼302b也不可以直接訪問后端。對后端的所有調(diào)用都必須通過跨平臺渲染引擎信道架構(gòu)304來進(jìn)行??缙脚_渲染引擎信道架構(gòu)是前端與后端之間的專用且直接的通信信道。例如,將由在應(yīng)用線程上運行的應(yīng)用代碼302a繪制到前端的內(nèi)容描述經(jīng)由跨平臺渲染引擎信道架構(gòu)轉(zhuǎn)移至后端。
[0047]后端在專用用戶界面線程上運行,并且具有允許對來自合成器的繪制請求快速響應(yīng)的高響應(yīng)性??缙脚_渲染引擎所提供的效率和響應(yīng)性是通過使用所存儲的內(nèi)容描述并且使用拉取模型來從應(yīng)用中獲得內(nèi)容而達(dá)成的。當(dāng)區(qū)域需要視覺更新時,后端從應(yīng)用中拉取出更新,而不是使應(yīng)用向合成器推送更新。當(dāng)對繪制請求進(jìn)行響應(yīng)所需的內(nèi)容描述可用時,跨平臺渲染引擎根據(jù)內(nèi)容描述來渲染內(nèi)容而不涉及應(yīng)用線程。如果必要的內(nèi)容描述不可用,則跨平臺渲染引擎向應(yīng)用發(fā)送繪制請求。當(dāng)應(yīng)用通過創(chuàng)建內(nèi)容描述而進(jìn)行響應(yīng)時,后端立即針對合成器而對內(nèi)容進(jìn)行渲染,并且對內(nèi)容描述進(jìn)行存儲以供之后使用。
[0048]后端維持跨平臺渲染引擎的權(quán)威線程狀態(tài)??缙脚_渲染引擎信道架構(gòu)允許前端設(shè)置屬性,并且對后端上的層樹進(jìn)行改變,但不提供對后端狀態(tài)數(shù)據(jù)的訪問。后端維持其自身版本的層樹和紋理指針。作為結(jié)果,前端狀態(tài)和后端狀態(tài)在任何特定的時間點上都可以不是同步的。由于跨平臺渲染引擎所采用的拉取模型,因此前端狀態(tài)和后端狀態(tài)將不同步的該可能性是不重要的,。
[0049]在各種實施例中,應(yīng)用與跨平臺渲染引擎之間的通信在模型層級中進(jìn)行。后端將請求傳遞至前端,而前端將請求發(fā)送至應(yīng)用線程。在其它實施例中,后端可以將請求直接發(fā)送至應(yīng)用。作為響應(yīng),應(yīng)用線程將響應(yīng)內(nèi)容描述繪制到前端。用戶界面線程上的應(yīng)用與后端之間的交互是不允許的。由于應(yīng)用不能將改變發(fā)送至前端與后端兩者,因此改變、前端狀態(tài)、以及后端狀態(tài)將最終穩(wěn)定,并且后端狀態(tài)與從已經(jīng)前端所發(fā)送的狀態(tài)相匹配。
[0050]應(yīng)用可以使用各種設(shè)備上下文將內(nèi)容描述繪制到前端。當(dāng)將內(nèi)容描述光柵化成相關(guān)聯(lián)的虛擬紋理時,后端使用另一個設(shè)備上下文。通過在前端處和后端處使用不同的設(shè)備上下文,跨平臺渲染引擎可以同時播放并記錄內(nèi)容描述。由于每個虛擬紋理被給予單個設(shè)備上下文,因此跨平臺渲染引擎按順序?qū)εc虛擬紋理相關(guān)聯(lián)的內(nèi)容描述進(jìn)行光柵化(即,繪制是序列化的)。在各種實施例中,給定的虛擬紋理的設(shè)備上下文用于將內(nèi)容描述與該虛擬紋理相關(guān)聯(lián)。
[0051]在一些實施例中,合成器控制后端與前端之間的通信。合成器可以根據(jù)請求的類型來調(diào)節(jié)(throttle)對內(nèi)容描述的請求。突出(outstanding)的繪制最多可以一次具有在傳輸中(in flight)的三個請求。如果觀察口發(fā)生重大改變,則其它類型的請求可以一次完成一個以確保響應(yīng)性。
[0052]跨平臺渲染引擎通過對在用戶界面線程中的內(nèi)容描述中所表示的內(nèi)容進(jìn)行光柵化來維持或改進(jìn)應(yīng)用的響應(yīng)性。跨平臺渲染引擎將內(nèi)容描述光柵化成提供至合成器的虛擬紋理(g卩,內(nèi)容描述虛擬紋理)。每個內(nèi)容描述都與經(jīng)選擇的虛擬紋理相關(guān)聯(lián),并且表示相關(guān)聯(lián)的虛擬紋理內(nèi)的具體的區(qū)域。經(jīng)選擇的區(qū)域可以是虛擬紋理的一部分或是整個虛擬紋理??缙脚_渲染引擎按順序播放相關(guān)聯(lián)的內(nèi)容描述,從而合成由虛擬紋理所保存的最終的光柵圖像。跨平臺渲染引擎的實施例可以可選地在應(yīng)用線程上執(zhí)行一些光柵化。
[0053]在一些實施例中,跨平臺渲染引擎提供后端紋理類來保存虛擬紋理。后端紋理類包含用于序列化對合成器的訪問的邏輯,這每次僅僅允許一個突出的繪制。例如,在對合成器的繪制在進(jìn)行中時,序列化邏輯鎖定對繪制命令的訪問。在一個實施例中,用戶界面線程嘗試獲得鎖定。如果成功,則用戶界面線程繪制內(nèi)容。如果不成功,則用戶界面線程調(diào)度在應(yīng)用線程上的工作。由于應(yīng)用線程的參與,這以有可能損失響應(yīng)性為代價來確保以正確的順序來繪制內(nèi)容。在其它實施例中,應(yīng)用線程上的任何渲染都使用中間表面池(pool)。接著,將中間表面編組至用戶界面線程以用于轉(zhuǎn)移至合成器。這確保只將用戶界面線程繪制到合成器。
[0054]在無效和更新期間,跨平臺渲染引擎可以對由在序列中之后出現(xiàn)的內(nèi)容描述所重寫的內(nèi)容描述進(jìn)行修正(trim)。在各種實施例中,跨平臺渲染引擎從與該虛擬紋理相關(guān)聯(lián)的內(nèi)容描述的序列中移除重寫的內(nèi)容描述,但保留所述內(nèi)容描述以供有可能將來使用(例如,在撤銷操作期間)。在一些實施例中,丟棄重寫的內(nèi)容描述??缙脚_渲染引擎可以可選地在命令級對內(nèi)容描述進(jìn)行修正以移除其內(nèi)容已經(jīng)被重寫的具體的命令,而保留其內(nèi)容還沒有被重寫的命令。
[0055]跨平臺渲染引擎追蹤每個虛擬紋理的當(dāng)前狀態(tài)(S卩,虛擬紋理狀態(tài))。虛擬紋理狀態(tài)指示具有相關(guān)聯(lián)的一個或多個內(nèi)容描述的虛擬紋理的區(qū)域。應(yīng)用可以請求當(dāng)前的虛擬紋理狀態(tài),并且使用信息來更新應(yīng)用內(nèi)容。例如,應(yīng)用可以標(biāo)識不具有相關(guān)聯(lián)的內(nèi)容描述的虛擬紋理的區(qū)域,并且當(dāng)應(yīng)用線程不忙時提供針對那些區(qū)域的內(nèi)容描述。在各種實施例中,不保證虛擬紋理狀態(tài)完全是最新的;然而,即使在當(dāng)前的虛擬紋理狀態(tài)落后于實際的虛擬紋理狀態(tài),并且將隨著后端內(nèi)容描述的改變而更新時,虛擬紋理狀態(tài)將仍然提供有用的信息。
[0056]跨平臺渲染引擎可以將內(nèi)容描述存儲在包裝器中,以允許內(nèi)容描述被注釋有輔助信息。在各種實施例中,包裝器包含與單個虛擬紋理相關(guān)聯(lián)的所有內(nèi)容描述(即,內(nèi)容描述的選集),并且包括關(guān)于虛擬紋理和/或所包括的內(nèi)容描述的輔助信息。在其它實施例中,每個內(nèi)容描述都具有其自身的包裝器,并且所述包裝器包括特定于該內(nèi)容描述的輔助信息。
[0057]跨平臺渲染引擎還可以將用于組成虛擬紋理的內(nèi)容描述存儲在選集(S卩,內(nèi)容描述合成)中,所述選集處理可應(yīng)用于內(nèi)容描述的基礎(chǔ)操作。內(nèi)容描述合成的實施例提供內(nèi)容描述協(xié)調(diào)??缙脚_渲染引擎考慮到在合成虛擬紋理的同時由經(jīng)選擇的數(shù)量(三個或更多個)的內(nèi)容描述重新繪制像素或多個像素時,內(nèi)容描述合成是低效率的。隨著重新繪制同一像素的內(nèi)容描述的數(shù)量的增加,組合的效率也越來越低。從而,跨平臺渲染引擎通過請求針對包含重新繪制像素的內(nèi)容描述的邊界矩形的新的內(nèi)容描述來協(xié)調(diào)內(nèi)容描述,以降低繪制成本。在一些實施例中,每次經(jīng)選擇的數(shù)量的內(nèi)容描述繪制到同一的像素或多個像素時,跨平臺渲染引擎就請求新的內(nèi)容描述。在其它實施例中,僅僅在內(nèi)容描述合成中的所有的內(nèi)容描述已經(jīng)被繪制之后,跨平臺渲染引擎才執(zhí)行內(nèi)容描述協(xié)調(diào)。內(nèi)容描述合成可以可選地用于對大型虛擬紋理進(jìn)行平鋪以改進(jìn)性能。
[0058]圖4A-D示出了針對包含三個內(nèi)容描述的內(nèi)容描述合成的內(nèi)容描述協(xié)調(diào)的示例。圖4A示出了在第一矩形402a中繪制了由來自內(nèi)容描述合成的第一內(nèi)容描述所描述的內(nèi)容之后的虛擬紋理400。圖4B示出了在渲染了產(chǎn)生與第一矩形部分重疊的第二矩形402b之后的虛擬紋理。圖4C示出了在渲染了產(chǎn)生與第一矩形和第二矩形兩者都部分重疊的第三矩形402c之后的虛擬紋理。通過意識到在公共的重疊區(qū)域404中的像素已經(jīng)被重新繪制了三次,跨平臺請求引擎請求新的內(nèi)容描述,所述新的內(nèi)容描述對限定被繪制到公共的像素區(qū)域的三個矩形的邊界的方框406中的內(nèi)容進(jìn)行描述。圖4D示出了在繪制了由替代原始的三個內(nèi)容描述402a、402b和402c的新的內(nèi)容描述408所描述的內(nèi)容之后的虛擬紋理400。
[0059]前端在模型層級中將跨平臺渲染引擎的功能(S卩,方法)顯露給應(yīng)用。跨平臺渲染引擎在所有平臺上顯露相同的基礎(chǔ)API。在各種實施例中,前端顯露用于設(shè)置并取回虛擬紋理的屬性、增加、移除、和更新虛擬紋理的方法中的一些或全部,所述方法包括但不限于:Invalidate、InvalidateRect、InvalidateReg1n、UpdateRect、Update、GetFulIUpdateReg1n、GetNumberOfUpdateRectS、GetUpdateRect、GetUpdateRectS、SetDp1、BeginDrawGd1、BeginDrawDirect2d、EndDraw、EndPartialDraw、Copy、Copy、Resize、GetDp1、GetContentRect、SetPrefetchSize、以及SetDirect2DTransformIncIudesTextureOffseto
[0060]API的實施例可以可選地在某些平臺上提供額外的功能。額外的功能可以基于在某個平臺上可用的獨特的功能或者簡單地由于在某個平臺(例如,具有顯著的市場份額的平臺)上更多地投資的意愿。應(yīng)當(dāng)理解的是,跨平臺渲染引擎不要求平臺間的特征等同來增強容易地轉(zhuǎn)換(port)應(yīng)用并且提供一致的用戶體驗的能力。換句話說,跨平臺渲染引擎不需要限于最小公共分母。就跨平臺渲染引擎在某個平臺上不提供一些功能這一點而言,編寫特定于平臺的代碼的選項保持可用,并且針對基礎(chǔ)API所編寫的任何與平臺無關(guān)的代碼的益處仍然適用。
[0061]拉取模型允許跨平臺渲染引擎請求應(yīng)用內(nèi)容以在需要內(nèi)容描述之前提供內(nèi)容描述。對內(nèi)容進(jìn)行預(yù)取允許跨平臺渲染引擎具有可用于對某些操作進(jìn)行響應(yīng)的內(nèi)容描述,并且即使在當(dāng)用戶調(diào)用操作時應(yīng)用線程忙于其它任務(wù)(例如,重新計算電子表格、保存恢復(fù)文件、或者將文件同步至基于云的存儲),仍然允許應(yīng)用表現(xiàn)出響應(yīng)性。跨平臺渲染引擎將在水平方向上和/或豎直方向上(即,預(yù)取邊界)預(yù)取經(jīng)選擇的量的應(yīng)用內(nèi)容。應(yīng)用可以自定義跨平臺渲染引擎應(yīng)該在水平方向上和/或豎直方向上默認(rèn)預(yù)取多少應(yīng)用內(nèi)容。預(yù)取邊界確定由跨平臺渲染引擎所緩存的應(yīng)用內(nèi)容的最小量;然而,如果充足的資源可用,則可以緩存更多應(yīng)用內(nèi)容。在一些實施例中,跨平臺渲染引擎基于操作來調(diào)整所緩存的應(yīng)用內(nèi)容的量。例如,與如果用戶按下鍵盤上的上或下箭頭或者使用長觸摸以滾動屏幕相比,如果用戶執(zhí)行輕彈手勢或者與豎直滾動條進(jìn)行交互,則可以緩存更大量的豎直偏置的應(yīng)用內(nèi)容。
[0062]滾動操作呈現(xiàn)了可以使用預(yù)取的場景的一個示例。在滾動期間,滾動層考慮具有虛擬紋理的所有子層。這在后端中在對通知進(jìn)行滾動期間進(jìn)行。對應(yīng)該被緩存的應(yīng)用內(nèi)容的重新計算可以僅僅在已經(jīng)滾動了一定距離之后進(jìn)行。滾動層具有請求其想要預(yù)取的虛擬紋理并且對在預(yù)取邊界之外的任何內(nèi)容描述合成進(jìn)行修正的功能。
[0063]圖5A示出了在給定了具有多個虛擬紋理的文檔中的經(jīng)選擇的預(yù)取邊界的情況下,可用于進(jìn)行緩存的虛擬紋理內(nèi)容描述的示例。在滾動層502附近,布置了多個虛擬紋理504。圍繞滾動層的預(yù)取邊界506包含多個虛擬紋理504中的一些或全部。為了可用于緩存,虛擬紋理中的至少一些和預(yù)取邊界的區(qū)域必須重疊。由陰影來指示可緩存的虛擬紋理。在位于預(yù)取邊界之外的虛擬紋理的部分相對較小的實例中,跨平臺渲染引擎可以緩存整個虛擬紋理。
[0064]圖5B示出了在給定了具有由多個瓦片組成的單個虛擬紋理的文檔中的經(jīng)選擇的預(yù)取邊界的情況下,可用于進(jìn)行緩存的虛擬紋理內(nèi)容描述的示例。圍繞滾動層的預(yù)取邊界包含虛擬紋理中的多個瓦片508的一部分。由陰影來指示可用于緩存的虛擬紋理中的瓦片。在該實例中,瓦片的尺寸相對較小,因此對于由預(yù)取邊界部分包含的任何瓦片,將整個瓦片進(jìn)行緩存。
[0065]縮放動作是可以由后端執(zhí)行而不需要應(yīng)用參與的操縱的示例。當(dāng)進(jìn)行針對由所存儲的一個或多個內(nèi)容描述所覆蓋的區(qū)域的縮放動作時,跨平臺渲染引擎能夠快速地在用戶界面線程上進(jìn)行響應(yīng),并且創(chuàng)建清晰的紋理。這是由于以下事實:內(nèi)容描述中的描述包含需要繪制光柵圖像所需要的關(guān)于應(yīng)用內(nèi)容的信息(例如,文本和路徑),而不是從原始的上下文中分離出的光柵圖像。例如,當(dāng)針對經(jīng)縮放的區(qū)域而渲染內(nèi)容描述時,跨平臺渲染引擎可以應(yīng)用比例因子。盡管將存在跨平臺渲染引擎不具有針對經(jīng)縮放的區(qū)域可用的內(nèi)容描述,并且繪制請求必須由應(yīng)用發(fā)出的實例,但可以期望這樣的實例是不頻發(fā)的,這是因為資源效率允許跨平臺渲染引擎保留大量的內(nèi)容描述。
[0066]實際情況是,基于原本被渲染為紋理的應(yīng)用內(nèi)容的縮放動作不與由跨平臺引擎所提供的效率相匹配。在不要求應(yīng)用對紋理進(jìn)行更新的情況下,基于紋理的縮放操作將使用有損的調(diào)整尺寸的算法來執(zhí)行。由于紋理中的不足的信息,這通常會得出更加模糊的圖像。額外地,調(diào)整尺寸算法將通常比應(yīng)用比例因子更加計算密集。通過請求應(yīng)用來繪制經(jīng)縮放的應(yīng)用內(nèi)容,可以獲得更加清晰的圖像。每次改變縮放等級,都會要求應(yīng)用重新繪制經(jīng)縮放的區(qū)域。相反,跨平臺渲染引擎能夠使用不同的比例因子而再一次渲染相同的內(nèi)容描述而不損失細(xì)節(jié)。
[0067]在應(yīng)用內(nèi)容是代表應(yīng)用而基于所存儲的內(nèi)容描述來渲染的場景中,跨平臺渲染引擎可以向應(yīng)用提供通知。所述通知給應(yīng)用提供機會來對應(yīng)用內(nèi)容進(jìn)行改變。換句話說,應(yīng)用可以在應(yīng)用線程空閑的事實之后更新應(yīng)用內(nèi)容。同時,由跨平臺渲染引擎所進(jìn)行的響應(yīng)以與用戶的期望一致的方式,并且以給用戶提供應(yīng)用有響應(yīng)的感覺的及時的方式來提供應(yīng)用內(nèi)容。
[0068]跨平臺渲染引擎的各種實施例提供不同的混合操作以允許應(yīng)用在內(nèi)容描述中描述混合的類型,以供當(dāng)針對重疊的紋理進(jìn)行渲染時使用。這樣的混合模式的示例包括常規(guī)混合、下逆混合、以及逆混合。特定的混合模式的可用性可以取決于可用于具體的平臺的功會K。
[0069]圖6A示出了使用常規(guī)混合模型而根據(jù)內(nèi)容描述來渲染的應(yīng)用內(nèi)容的示例。當(dāng)回放內(nèi)容描述時,常規(guī)混合模式提供標(biāo)準(zhǔn)的透明度(即,阿爾法通道)支持??紤]包含用于繪制兩個重疊的圓的命令的內(nèi)容描述的示例。所述圓不占據(jù)由內(nèi)容描述所描述的全部矩形區(qū)域。為了完全渲染與內(nèi)容描述相關(guān)聯(lián)的區(qū)域,也必須渲染所述圓和區(qū)域中未被占據(jù)的部分(即,背景)。使用常規(guī)混合模型支持,跨平臺渲染引擎渲染區(qū)域中未被占據(jù)的部分以使得當(dāng)被合成為虛擬紋理時,背景被視為透明的(例如,設(shè)置阿爾法通道)。換句話說,之后渲染的內(nèi)容描述的背景將不遮蓋來自之前渲染的內(nèi)容描述的內(nèi)容。在各種實施例中,跨平臺渲染引擎可以采用不同等級的透明度。圖6B示出了在沒有常規(guī)混合模式支持的情況下所得出的虛擬紋理,其中,背景是使用默認(rèn)填充顏色來渲染的,該默認(rèn)填充顏色遮蓋了第二圓周圍的區(qū)域。
[0070]圖7A示出了使用下逆混合模式而根據(jù)內(nèi)容描述來渲染的應(yīng)用內(nèi)容的示例。當(dāng)回放內(nèi)容描述時,下逆混合模式提供“變暗優(yōu)先(darken only)”支持。考慮包含用于突出顯示文本的命令的內(nèi)容描述的示例。第一內(nèi)容描述可以描述文本而第二內(nèi)容描述可以描述所填充的路徑,所述路徑表示當(dāng)合成時將與文本重疊的突出顯示。在具有深色的印記的淺色(例如,白色)的紙上,突出顯示符(highlighter)給淺色的紙上色,但是對深色的印記沒有可感知的影響。使用下逆模式支持,跨平臺渲染引擎指示合成器以將由不同的內(nèi)容描述所繪制的相同的像素的顏色僅變暗的方式對紋理進(jìn)行合成。在一些實施例中,當(dāng)繪制到同一像素的兩個顏色進(jìn)行組合以產(chǎn)生與原始的兩個顏色都不同的更深的顏色時,保留新的顏色,而當(dāng)結(jié)果是更淺的顏色時,保留原始的兩個顏色中較深的顏色。這允許跨平臺渲染引擎產(chǎn)生真實的突出顯示效果。圖7B示出了在沒有下逆模式支持的情況下所得出的虛擬紋理,其中,包含與路徑重疊的文本的像素的部分變得更淺,這是由于對繪制到相同的像素的顏色進(jìn)行平均或者將透明度應(yīng)用至表示突出顯示的路徑和填充的結(jié)果。
[0071]圖8A示出了使用逆混合模式而根據(jù)內(nèi)容描述來渲染的應(yīng)用內(nèi)容的示例。當(dāng)回放內(nèi)容描述時,逆混合模式將背景顏色反轉(zhuǎn)(reverse),以確保內(nèi)容總是可見的??紤]包含用于顯示插入記號以示出在深色背景上的輸入文本的當(dāng)前位置的命令的內(nèi)容描述的示例。第一內(nèi)容描述可以描述文本,而第二內(nèi)容描述可以描述插入記號以及相關(guān)聯(lián)的動畫(例如,閃爍)。當(dāng)一起被渲染和合成時,與插入記號重疊的文本的部分采用與插入記號相反的顏色(例如,白色變成黑色),因此文本看起來沒有被剪掉。圖SB示出了在沒有逆模式支持的情況下所得出的虛擬紋理,其中,與插入記號重疊的文本的部分被插入標(biāo)記遮蓋,并且看起來已經(jīng)被剪掉了。
[0072]圖9是跨平臺渲染引擎方法的一個實施例的高級流程圖。當(dāng)要求對與應(yīng)用內(nèi)容有關(guān)的顯示表面進(jìn)行更新的視圖改變發(fā)生時,跨平臺渲染引擎方法900開始。視圖改變可以是與應(yīng)用的用戶交互(例如,數(shù)據(jù)輸入或者與應(yīng)用用戶界面的交互)的結(jié)果。
[0073]在更新請求操作902中,接收來自合成器的用于更新顯示表面的一部分的更新請求,并由跨平臺渲染引擎對所述更新請求進(jìn)行解譯。作為對更新請求的響應(yīng),內(nèi)容描述庫操作904確定是否由后端來存儲與顯示表面的該部分相關(guān)聯(lián)的內(nèi)容描述。如果是,則跨平臺渲染引擎根據(jù)擴展的渲染操作906根據(jù)可用的內(nèi)容描述對在更新請求中所指定的紋理進(jìn)行渲染。
[0074]操縱確定操作908確定由跨平臺渲染引擎所接收的更新請求是否包含可以由后端執(zhí)行的對現(xiàn)有的內(nèi)容描述的操縱,而不需要待對應(yīng)用進(jìn)行繪制請求。例如,如果更新請求包含用于對已經(jīng)由內(nèi)容描述所描述應(yīng)用的一部分進(jìn)行縮放的請求,則跨平臺渲染引擎可以對更新請求進(jìn)行響應(yīng)而不涉及應(yīng)用。渲染經(jīng)操縱的內(nèi)容描述操作912操縱現(xiàn)有的內(nèi)容描述并且生成與其上運行跨平臺渲染引擎的平臺兼容的顯示組件。這可以通過在上文中的縮放操作的示例中應(yīng)用合適的現(xiàn)有內(nèi)容描述的比例因子來完成。應(yīng)用通知操作914發(fā)送通知,其通知應(yīng)用跨平臺渲染引擎已經(jīng)代表應(yīng)用對更新請求進(jìn)行了響應(yīng)。通知給應(yīng)用機會來改變已經(jīng)渲染的內(nèi)容。
[0075]如果操縱不是必須的,則標(biāo)準(zhǔn)渲染操作914根據(jù)現(xiàn)有的內(nèi)容描述而生成與其上運行跨平臺渲染引擎的平臺兼容的顯示組件。
[0076]可選的內(nèi)容描述協(xié)調(diào)操作916發(fā)出協(xié)調(diào)請求,要求應(yīng)用用新的內(nèi)容描述來替代繪制到相同的像素的內(nèi)容描述。協(xié)調(diào)請求指示應(yīng)用針對包含重新繪制像素的內(nèi)容描述的邊界矩形來繪制新的內(nèi)容描述。當(dāng)被接收到時,跨平臺渲染引擎用新的內(nèi)容描述來替代重新繪制像素的內(nèi)容描述。
[0077]可選的預(yù)取更新操作確定更新請求是否指示當(dāng)前的視圖已經(jīng)被移動以使得經(jīng)緩存的內(nèi)容描述應(yīng)該被更新,或者確定更新請求是否指示額外的內(nèi)容描述應(yīng)該被緩存以允許應(yīng)用保持對用戶響應(yīng)。例如,如果用戶快速滾動視圖,則可以請求在滾動的方向上的額外的內(nèi)容描述。如果是這樣,則預(yù)取操作920向應(yīng)用發(fā)送請求以針對接近于當(dāng)前虛擬紋理的區(qū)域而提供內(nèi)容描述。如果當(dāng)前的視口移動至那些周圍的區(qū)域,則存儲這些所緩存的內(nèi)容描述以供使用。
[0078]返回至內(nèi)容描述庫操作904,如果所需要的對內(nèi)容描述的響應(yīng)不可用,則內(nèi)容描述拉取操作924向應(yīng)用發(fā)送拉取請求,所述拉取請求指定跨平臺渲染引擎所需要的應(yīng)用內(nèi)容對更新請求進(jìn)行響應(yīng)。在內(nèi)容描述接收操作926期間,跨平臺渲染引擎在前端處從應(yīng)用接收內(nèi)容描述。內(nèi)容描述轉(zhuǎn)移操作928將內(nèi)容描述從前端經(jīng)由跨平臺渲染引擎信道架構(gòu)發(fā)送至后端。前端可以保留內(nèi)容描述操作的復(fù)本。這時,立即渲染操作930響應(yīng)于內(nèi)容描述拉取操作而根據(jù)內(nèi)容描述來生成平臺兼容的顯示組件。在各種實施例中,立即渲染操作包括在擴展的渲染操作中所描述的操作中的一些或全部。內(nèi)容描述存儲操作932存儲內(nèi)容描述以供將來由后端使用。
[0079]在全部兩個實例中,合成操作934將經(jīng)渲染的紋理轉(zhuǎn)移至合成器以用于包含在可以在計算設(shè)備的顯示器上示出的顯示表面中。在方法的結(jié)束處,在計算設(shè)備上的屏幕上示出顯示表面。
[0080]該申請的主題可以在諸如系統(tǒng)、設(shè)備、和其它制品或方法之類的多種實施例中實踐。實施例可以被實現(xiàn)為硬件、軟件、計算機可讀介質(zhì)、或其組合??梢越?jīng)由多種計算系統(tǒng)來運行在本文中所描述的實施例和功能,所述計算系統(tǒng)包括但不限于:臺式計算機系統(tǒng)、有線和無線計算系統(tǒng)、移動計算系統(tǒng)(例如,移動電話、上網(wǎng)本、平板或平板類計算機、筆記本計算機、以及膝上型計算機)、手持設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程的消費型電子產(chǎn)品、微型計算機、以及大型計算機。
[0081]可以經(jīng)由板載計算設(shè)備顯示器或者經(jīng)由與一個或多個計算設(shè)備相關(guān)聯(lián)的遠(yuǎn)程顯示器單元來顯示用戶界面和各種類型的信息。例如,可以在其上投影有用戶界面和各種類型的信息的墻面上來顯示用戶界面和各種類型的信息,并與其進(jìn)行交互。與利用其可以實踐本發(fā)明的實施例的多種計算系統(tǒng)的交互包括:擊鍵輸入、觸摸屏輸入、語音或其他音頻輸入、手勢輸入(在相關(guān)聯(lián)的計算設(shè)備裝備有用于捕獲和解譯用于控制計算設(shè)備的功能的用戶手勢的檢測(例如,相機)功能的情況下)等。
[0082]圖10和圖1lA-B以及相關(guān)聯(lián)的描述提供了對在其中可以實踐本發(fā)明的實施例的多種操作環(huán)境的討論。然而,示出并討論的設(shè)備和系統(tǒng)是出于示例和說明的目的的,而不限制可以用于實踐上文中所描述的本發(fā)明的實施例的大量的計算設(shè)備配置。
[0083]圖10是示出了利用其可以實踐本發(fā)明的計算設(shè)備1000的物理組件(S卩,硬件)的一個實施例的框圖。在下文中所描述的計算設(shè)備組件可以適用于實施計算設(shè)備,包括但不限于:個人計算機、平板計算機、平面計算機、以及智能電話、或者在本文中所討論的任何其它計算設(shè)備。在基本配置中,計算設(shè)備1000可以包括至少一個處理單元1002和系統(tǒng)存儲器1004。取決于計算設(shè)備的配置和類型,系統(tǒng)存儲器1004可以包括但不限于:易失性存儲設(shè)備(例如,隨機存取存儲器)、非易失性存儲設(shè)備(例如,只讀存儲器)、閃速存儲器、或者這樣的存儲器的任何組合。系統(tǒng)存儲器1004可以包括操作系統(tǒng)1005以及一個或多個程序模塊1006,其適用于運行諸如跨平臺渲染引擎120之類的軟件應(yīng)用1020。例如,操作系統(tǒng)1005可以適用于控制計算設(shè)備1000的操作。此外,可以結(jié)合圖形庫、其它操作系統(tǒng)、或任意其它應(yīng)用程序來實踐本發(fā)明的實施例,并且所述實施例不限于任何特定的應(yīng)用或系統(tǒng)。該基本配置是由虛線1008內(nèi)的那些組件所示出的。計算設(shè)備1000可以具有額外的特征或功能。例如,計算設(shè)備1000還可以包括額外的數(shù)據(jù)存儲設(shè)備(可移動的和/或不可移動的),例如,磁盤、光盤、或磁帶。這樣的額外的存儲是由可移動存儲設(shè)備1009和不可移動存儲設(shè)備1010所示出的。
[0084]如上所述,可以將多個程序模塊和數(shù)據(jù)文件存儲在系統(tǒng)存儲器1004中。當(dāng)在處理單元1002上執(zhí)行時,軟件應(yīng)用1020可以執(zhí)行過程,包括但不限于跨平臺渲染方法900中的一個或多個步驟。可以根據(jù)本發(fā)明的實施例來使用的其它程序模塊可以包括電子郵件和聯(lián)系人應(yīng)用、文字處理應(yīng)用、電子表格應(yīng)用、數(shù)據(jù)庫應(yīng)用、幻燈片演示應(yīng)用、繪畫應(yīng)用等。
[0085]此外,可以在包括分立電子元件、包含邏輯門的封裝的或集成的電子芯片、利用微處理器的電路、或包含電子元件或微處理器的單個芯片的電路中實踐本發(fā)明的實施例。例如,可以經(jīng)由片上系統(tǒng)(SOC)來實踐本發(fā)明的實施例,其中,所示出的組件中的每個或多個可以集成到單個集成電路上。這樣的SOC設(shè)備可以包括一個或多個處理單元、圖形單元、通信單元、系統(tǒng)虛擬化單元、以及全都作為單個集成電路集成(或“燒制”)到芯片襯底上的各種應(yīng)用功能。當(dāng)經(jīng)由SOC操作時,在本文中關(guān)于軟件應(yīng)用1020所描述的功能可以經(jīng)由與單個集成電路(芯片)上的計算設(shè)備1000的其它組件一起集成的專用邏輯來操作。還可以使用能夠執(zhí)行邏輯運算(例如,與、或、非)的其它技術(shù)來實踐本發(fā)明的實施例,所述技術(shù)包括但不限于:機械、光學(xué)、流體、和量子技術(shù)。另外,可以在通用計算機中或者在任何其它電路或系統(tǒng)中實踐本發(fā)明的實施例。
[0086]計算設(shè)備1000還可以具有一個或多個輸入設(shè)備1012,例如,鍵盤、鼠標(biāo)、筆、聲音輸入設(shè)備、觸摸輸入設(shè)備等。還可以包括諸如顯示器、揚聲器、打印機等之類的輸出設(shè)備1014。前述設(shè)備是示例并且可以使用其它設(shè)備。計算設(shè)備1000可以包括允許與其它計算設(shè)備1018進(jìn)行通信的一個或多個通信連接1016。合適的通信連接1016的示例包括但不限于:RF發(fā)射機、接收機、和/或收發(fā)機電路;通用串行總線(USB )、并行、和/或串行端口。
[0087]如在本文中所使用的術(shù)語計算機可讀介質(zhì)可以包括計算機存儲介質(zhì)。計算機存儲介質(zhì)可以包括以用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊之類的信息的任何方法或技術(shù)來實現(xiàn)的易失性和非易失性、可移動和不可移動的介質(zhì)。系統(tǒng)存儲器1004、可移動存儲設(shè)備1009、和不可移動存儲設(shè)備1010全都是計算機存儲介質(zhì)的示例(S卩,存儲器存儲)。計算機存儲介質(zhì)可以包括:隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除只讀存儲器(EEPROM)、閃速存儲器或其他存儲器技術(shù)、壓縮盤只讀存儲器(CD-ROM)、數(shù)字通用盤(DVD)或其他光存儲、盒式磁帶、磁帶、磁盤存儲器或其他磁存儲設(shè)備、或者可以用于存儲信息并且可以由計算設(shè)備1000所訪問的任何其他制造物。任何這樣的計算機存儲介質(zhì)都可以是計算設(shè)備1000的一部分。
[0088]圖1lA和IlB示出了可以利用其實踐本發(fā)明的實施例的移動計算設(shè)備1100。合適的移動計算設(shè)備的示例包括但不限于:移動電話、智能電話、平板計算機、以及膝上型計算機。在基本配置中,移動計算設(shè)備1100是既具有輸入元件又具有輸出元件的手持式計算機。移動計算設(shè)備1100通常包括顯示器1105以及允許用戶將信息輸入到移動計算設(shè)備1100中的一個或多個輸入按鈕1110。移動計算設(shè)備1100的顯示器1105也可以充當(dāng)輸入設(shè)備308(例如,觸摸屏顯示器)。如果被包括,則可選的側(cè)輸入元件1115允許進(jìn)一步的用戶輸入。側(cè)輸入元件1115可以是旋轉(zhuǎn)開關(guān)、按鈕或任何其他類型的手動輸入元件。在可替代的實施例中,移動計算設(shè)備1100可以包含更多或更少的輸入元件。例如,在一些實施例中,顯示器1105可以不是觸摸屏。在另一個可替代的實施例中,移動計算設(shè)備1100是便攜式電話系統(tǒng),例如蜂窩電話。移動計算設(shè)備1100還可以包括可選的小鍵盤1135??蛇x的小鍵盤1135可以是物理小鍵盤或者在觸摸屏顯示器上生成的“軟”小鍵盤。在各種實施例中,輸出元件包括用于示出圖形用戶界面的顯示器1105、視覺指示器1120(例如,發(fā)光二極管)、和/或音頻換能器1125(例如,揚聲器)。在一些實施例中,移動計算設(shè)備1100包含用于給用戶提供觸覺反饋的振動換能器。在另一個實施例中,移動計算設(shè)備1100包含用于向外部設(shè)備發(fā)送信號或從外部設(shè)備中接收信號的輸入和/或輸出端口,例如音頻輸入(例如,麥克風(fēng)插孔)、音頻輸出(例如,耳機插孔)、和視頻輸出(例如,HDMI端口)。
[0089]圖1lB是示出了移動計算設(shè)備的一個實施例的架構(gòu)的框圖。即,移動計算設(shè)備1100可以包含用于實現(xiàn)一些實施例的系統(tǒng)(即,架構(gòu))1102。在一個實施例中,系統(tǒng)1102被實現(xiàn)為能夠運行一個或多個應(yīng)用(例如,瀏覽器、電子郵件客戶端、記事本、聯(lián)系人管理器、消息發(fā)送客戶端、游戲、和媒體客戶端/播放器)的智能電話。在一些實施例中,系統(tǒng)1102被集成為計算設(shè)備,例如集成的個人數(shù)字助理(PDA)和無線電話。
[0090]一個或多個應(yīng)用程序1166可以被加載到存儲器1162中,并且在操作系統(tǒng)1164上運行或者與操作系統(tǒng)1164相關(guān)聯(lián)地運行。應(yīng)用程序的示例包括:電話撥號程序、電子郵件程序、個人信息管理(PIM)程序、文字處理程序、電子表格程序、互聯(lián)網(wǎng)瀏覽器程序、消息發(fā)送程序等。系統(tǒng)1102還包括存儲器1162內(nèi)的非易失性存儲區(qū)域1168。非易失性存儲區(qū)域1168可以用于存儲在系統(tǒng)1102斷電時不應(yīng)丟失的永久信息。應(yīng)用程序1166可以使用信息并將信息存儲在非易失性存儲區(qū)域1168中,例如電子郵件應(yīng)用程序所使用的電子郵件或其他消息等。同步應(yīng)用(未示出)也駐留在系統(tǒng)1102上,并且被編程為與駐留在主機計算機上的對應(yīng)的同步應(yīng)用進(jìn)行交互,以將存儲在非易失性存儲區(qū)域1168中的信息與存儲在主機計算機上的對應(yīng)的信息保持同步。應(yīng)當(dāng)理解的是,包括在本文中所描述的軟件應(yīng)用1020的其他應(yīng)用可以被加載到存儲器1162中并且在移動計算設(shè)備1100上運行。
[0091]系統(tǒng)1102具有電源1170,其可以被實現(xiàn)為一個或多個電池。電源1170還可以包括外部電源,例如,AC適配器或者對電池供電或充電的加電對接托架。
[0092]系統(tǒng)1102還可以包括執(zhí)行發(fā)送和接收射頻通信的功能的無線電設(shè)備1172。無線電設(shè)備1172可以經(jīng)由通信運營商或服務(wù)提供商來促成系統(tǒng)1102和外部世界之間的無線連通性。到無線電設(shè)備1172和來自無線電設(shè)備1172的傳輸是在操作系統(tǒng)1164的控制下進(jìn)行的。換句話說,由無線電設(shè)備1172所接收到的通信可以經(jīng)由操作系統(tǒng)1164散播至應(yīng)用程序1166,反之亦然。
[0093]視覺指示器1120可以用于提供視覺通知,并且/或音頻接口1174可以用于經(jīng)由音頻換能器1125來產(chǎn)生可聽見的通知。在所示出的實施例中,視覺指示器1120是發(fā)光二極管(LED),而音頻換能器1125是揚聲器。這些設(shè)備可以直接耦合至電源1170,使得當(dāng)被激活時,即使為了保存電池電量可以關(guān)閉處理器1160和其他組件,它們也在由通知機制所規(guī)定的期間內(nèi)保持通電。LED可以被編程為保持無限期地通電以指示設(shè)備的通電狀態(tài),直到用戶采取動作為止。音頻接口 1174用于向用戶提供可聽見的信號并從用戶處接收可聽見的信號。例如,除了耦合至音頻換能器1125之外,音頻接口 1174還可以耦合至麥克風(fēng)以接收可聽見的輸入,從而例如促成電話交談。根據(jù)本發(fā)明的實施例,麥克風(fēng)也可以充當(dāng)音頻傳感器以促進(jìn)對通知的控制,如將在下文中所描述的。系統(tǒng)1102還可以包括使能夠操作板載相機1130來記錄靜止的圖像、視頻流等的視頻接口 1176。
[0094]實現(xiàn)系統(tǒng)1102的移動計算設(shè)備1100可以具有額外的特征或功能。例如,移動計算設(shè)備1100還可以包括額外的數(shù)據(jù)存儲設(shè)備(可移動的和/或不可移動的),例如,磁盤、光盤、或磁帶。由非易失性存儲區(qū)域1168示出了這樣額外的存儲。
[0095]由移動計算設(shè)備1100所生成或捕獲的、并且經(jīng)由系統(tǒng)1102所存儲的數(shù)據(jù)/信息可以本地地存儲在移動計算設(shè)備1100上,如上所述,或者所述數(shù)據(jù)可以存儲在可以由設(shè)備通過無線電設(shè)備1172或者經(jīng)由移動計算設(shè)備1100和與移動計算設(shè)備1100相關(guān)聯(lián)的分離的計算設(shè)備之間的有線連接來訪問的任何數(shù)量的存儲介質(zhì)中,例如,分布式計算網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))中的服務(wù)器計算機。應(yīng)當(dāng)理解的是,這樣的數(shù)據(jù)/信息可以通過移動計算設(shè)備1100經(jīng)由無線電設(shè)備1172或者經(jīng)由分布式計算網(wǎng)絡(luò)來訪問。類似地,這樣的數(shù)據(jù)/信息可以根據(jù)公知的數(shù)據(jù)/信息傳輸和存儲單元(包括電子郵件和協(xié)作數(shù)據(jù)/信息共享系統(tǒng))容易地在計算設(shè)備之間進(jìn)行存儲和使用。
[0096]在該申請中所提供的對一個或多個實施例的描述和說明旨在向本領(lǐng)域技術(shù)人員提供對主題的完整范圍的完全徹底和完整的公開,而不旨在以任何方式限制或約束本發(fā)明的范圍。在該申請中所提供的實施例、示例、和細(xì)節(jié)被認(rèn)為足以表達(dá)所有權(quán),并且使得本領(lǐng)域技術(shù)人員能夠?qū)嵺`所要求保護(hù)的發(fā)明的最佳模式。被認(rèn)為是本領(lǐng)域技術(shù)人員所公知的對結(jié)構(gòu)、資源、操作、和動作的描述可以是簡短的或者被省略,以避免使得該申請的主題的較少人知道的方面或獨特的方面難以理解。除非在本文中明確地指出,否則,所要求保護(hù)的發(fā)明都不應(yīng)該被解釋為限于在該申請中所提供的任何實施例、示例、或細(xì)節(jié)。無論是組合還是單獨地被示出和描述,各種特征(包括結(jié)構(gòu)和方法)都旨在被選擇性地包括或省略,以產(chǎn)生具有一組特定特征的實施例。此外,任何或所有示出或描述的功能和動作可以以任意順序或同時執(zhí)行。在已經(jīng)提供了本申請的描述和說明之后,本領(lǐng)域技術(shù)人員可以設(shè)想變型、修改和替代實施例,其落入到在該申請中所實施的總體構(gòu)思的更寬泛的方面的精神內(nèi),而不脫離所要求保護(hù)的發(fā)明的更寬泛的范圍。
【主權(quán)項】
1.一種用于對與應(yīng)用相關(guān)聯(lián)的計算機生成的顯示組件進(jìn)行渲染,以用于在計算機支持的顯示表面上顯示的方法,所述方法包括以下操作: 接收描述如何繪制與應(yīng)用的應(yīng)用內(nèi)容相關(guān)聯(lián)的一個或多個計算機生成的顯示組件的一個或多個命令; 將所述一個或多個命令存儲在一個或多個內(nèi)容描述中,以用于由獨立于所述應(yīng)用而操作的渲染引擎來使用; 利用所述渲染引擎、根據(jù)所述一個或多個內(nèi)容描述來渲染所述一個或多個計算機生成的顯示組件以用于由所述系統(tǒng)來顯示;以及 提供所述計算機生成的顯示組件以用于在所述計算機支持的顯示表面上顯示。2.根據(jù)權(quán)利要求1所述的方法還包括以下操作: 要求所述應(yīng)用提供以下命令:所述命令描述如何繪制當(dāng)前沒有存儲針對其的一個或多個內(nèi)容描述的一個或多個計算機生成的顯示組件的命令,其中,所述一個或多個內(nèi)容描述與所述一個或多個計算機生成的顯示組件相關(guān)聯(lián); 根據(jù)所述命令而立即渲染所述一個或多個計算機生成的顯示組件;以及 將所述命令存儲在一個或多個內(nèi)容描述中以供后續(xù)使用。3.根據(jù)權(quán)利要求2所述的方法,還包括以下的操作:接收對所述一個或多個計算機生成顯示組件進(jìn)行渲染以用于在所述計算機支持的顯示表面上進(jìn)行顯示的請求。4.根據(jù)權(quán)利要求1所述的方法,其中,所述一個或多個命令以及所述一個或多個內(nèi)容描述是與平臺無關(guān)的,并且利用所述渲染引擎、根據(jù)所述一個或多個內(nèi)容描述來渲染所述一個或多個計算機生成的顯示組件以用于由所述系統(tǒng)來顯示的操作生成特定于平臺的計算機生成的顯示組件。5.根據(jù)權(quán)利要求1所述的方法,還包括以下的操作:將與表示應(yīng)用內(nèi)容的相同的虛擬紋理相關(guān)聯(lián)的一個或多個內(nèi)容描述加入到內(nèi)容描述的選集。6.根據(jù)權(quán)利要求5所述的方法,還包括以下的操作: 確定內(nèi)容描述的所述選集中的至少三個內(nèi)容描述已經(jīng)渲染了相同的至少一個像素;請求針對由邊界框所包圍的所述虛擬紋理的一部分的新的內(nèi)容描述,所述邊界框包含由來自所述應(yīng)用的所述至少三個內(nèi)容描述所繪制的所述虛擬紋理的部分;以及 用內(nèi)容描述的所述選集中的所述新的內(nèi)容描述來替代渲染了所述相同的至少一個像素的所述至少三個內(nèi)容描述。7.根據(jù)權(quán)利要求1所述的方法,其中: 接收描述如何繪制所述應(yīng)用的一個或多個計算機生成的顯示組件的一個或多個命令的操作在第一過程中進(jìn)行; 利用所述渲染引擎、根據(jù)所述一個或多個內(nèi)容描述來渲染所述一個或多個計算機生成的顯示組件以用于由所述系統(tǒng)來顯示的操作在第二過程中進(jìn)行; 將所述一個或多個命令存儲在一個或多個內(nèi)容描述中的操作還包括:將所述一個或多個內(nèi)容描述從所述第一過程傳遞至所述第二過程的操作。8.—種系統(tǒng),其用于渲染應(yīng)用內(nèi)容以用于在計算機支持的顯示表面上顯示,所述系統(tǒng)包括: 第一內(nèi)容描述存儲器,其用于存儲包含從生成應(yīng)用內(nèi)容的應(yīng)用中所接收到的命令的內(nèi)容描述,所述命令描述如何繪制所述應(yīng)用內(nèi)容;以及 執(zhí)行所述應(yīng)用的處理器,以及用于根據(jù)所述內(nèi)容描述來渲染所述應(yīng)用內(nèi)容以用于在計算機支持的表面上顯示的渲染引擎,所述渲染引擎與所述第一存儲器和所述應(yīng)用進(jìn)行通?目O9.根據(jù)權(quán)利要求8所述的系統(tǒng),其中,所述渲染引擎與負(fù)責(zé)合成最終圖像以用于在所述計算機支持的顯示表面上顯示的合成器相關(guān)聯(lián)。10.—種包含計算機可執(zhí)行指令的計算機可讀介質(zhì),其中,當(dāng)由計算機執(zhí)行時,所述計算機可執(zhí)行指令執(zhí)行一種用于在計算機支持的顯示表面上顯示應(yīng)用內(nèi)容的方法,所述方法包括以下操作: 接收描述如何繪制與應(yīng)用的應(yīng)用內(nèi)容相關(guān)聯(lián)的一個或多個計算機生成的顯示組件的一個或多個命令; 將所述一個或多個命令存儲在一個或多個內(nèi)容描述中,以用于由獨立于所述應(yīng)用而操作的渲染引擎來使用; 利用所述渲染引擎、根據(jù)所述一個或多個內(nèi)容描述來渲染所述一個或多個計算機生成的顯示組件以用于由所述系統(tǒng)來顯示;以及 提供所述計算機生成的顯示組件以用于在所述計算機支持的顯示表面上顯示。11.根據(jù)權(quán)利要求10所述的計算機可讀介質(zhì)還包括以下操作: 要求所述應(yīng)用提供以下命令:所述命令描述如何繪制當(dāng)前沒有存儲針對其的一個或多個內(nèi)容描述的一個或多個計算機生成的顯示組件的命令,其中,所述一個或多個內(nèi)容描述與所述一個或多個計算機生成的顯示組件相關(guān)聯(lián); 根據(jù)所述命令而立即渲染所述一個或多個計算機生成的顯示組件;以及 將所述命令存儲在一個或多個內(nèi)容描述中以供后續(xù)使用。12.根據(jù)權(quán)利要求11所述的計算機可讀介質(zhì),還包括以下操作:接收對所述一個或多個計算機生成顯示組件進(jìn)行渲染以用于在所述計算機支持的顯示表面上顯示的請求。13.根據(jù)權(quán)利要求10所述的計算機可讀介質(zhì),其中,所述一個或多個命令以及所述一個或多個內(nèi)容描述是與平臺無關(guān)的,并且利用所述渲染引擎、根據(jù)所述一個或多個內(nèi)容描述來渲染所述一個或多個計算機生成的顯示組件以用于由所述系統(tǒng)來顯示的操作生成特定于平臺的計算機生成的顯示組件。14.根據(jù)權(quán)利要求10所述的計算機可讀介質(zhì),還包括以下操作:將與表示應(yīng)用內(nèi)容的相同的虛擬紋理相關(guān)聯(lián)的一個或多個內(nèi)容描述加入到內(nèi)容描述的選集。15.根據(jù)權(quán)利要求14所述的計算機可讀介質(zhì),還包括以下操作: 確定內(nèi)容描述的所述選集中的至少三個內(nèi)容描述已經(jīng)渲染了相同的至少一個像素;請求針對由邊界框所包圍的所述虛擬紋理的一部分的新的內(nèi)容描述,所述邊界框包含由來自所述應(yīng)用的所述至少三個內(nèi)容描述所繪制的所述虛擬紋理的部分;以及 用內(nèi)容描述的所述選集中的所述新的內(nèi)容描述來替代渲染了所述相同的至少一個像素的所述至少三個內(nèi)容描述。
【文檔編號】G06F3/14GK106062705SQ201580010299
【公開日】2016年10月26日
【申請日】2015年2月20日
【發(fā)明人】B·威特曼, D·麥克唐納, M·Y·喬, F·烏哈克
【申請人】微軟技術(shù)許可有限責(zé)任公司