095]需要說(shuō)明的是,由于GPU不能直接訪問(wèn)位圖,因此要使用GPU去繪制位圖則必須先生成位圖相應(yīng)的紋理供GPU進(jìn)行貼圖操作。
[0096]然而本發(fā)明中,也有可能出現(xiàn)另外一種情況,即壓縮單元還沒有完成對(duì)即將要使用的非壓縮位圖進(jìn)行壓縮,因而此時(shí)存儲(chǔ)單元中并沒有與該非壓縮位圖相對(duì)應(yīng)的壓縮紋理數(shù)據(jù)。當(dāng)存儲(chǔ)單元中沒有與非壓縮位圖相對(duì)應(yīng)的壓縮紋理數(shù)據(jù)時(shí),則沿用以前的方式,先針對(duì)這個(gè)非壓縮位圖創(chuàng)建一個(gè)非壓縮的紋理暫時(shí)使用,直到相應(yīng)的壓縮紋理創(chuàng)建完成為止。
[0097]如上所述,本發(fā)明所提供的優(yōu)化Canvas繪制性能的方法及裝置,通過(guò)實(shí)時(shí)紋理壓縮將壓縮后的紋理繪制到Canvas上能夠減少紋理對(duì)內(nèi)存的占用量,并提高GPU對(duì)紋理進(jìn)行貼圖操作的性能。
[0098]本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來(lái)實(shí)現(xiàn)。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
[0099]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)、裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
[0100]在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0101]所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
[0102]另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。
[0103]所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(R0M,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0104]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【主權(quán)項(xiàng)】
1.一種優(yōu)化Canvas繪制性能的方法,包括: 壓縮解碼后的非壓縮位圖,生成與所述非壓縮位圖相對(duì)應(yīng)的壓縮紋理數(shù)據(jù); 根據(jù)所述壓縮紋理數(shù)據(jù)創(chuàng)建所述非壓縮位圖的壓縮紋理; 將所述壓縮紋理繪制到Canvas上。2.如權(quán)利要求1所述的優(yōu)化Canvas繪制性能的方法,其中,在壓縮解碼后的非壓縮位圖生成與所述非壓縮位圖相對(duì)應(yīng)的壓縮紋理數(shù)據(jù)的過(guò)程中,通過(guò)在后臺(tái)運(yùn)行的紋理壓縮線程將所述非壓縮位圖進(jìn)行壓縮生成與所述非壓縮位圖相對(duì)應(yīng)的壓縮紋理數(shù)據(jù)。3.如權(quán)利要求2所述的優(yōu)化Canvas繪制性能的方法,其中,在生成與所述非壓縮位圖相對(duì)應(yīng)的壓縮紋理數(shù)據(jù)后,將所述壓縮紋理數(shù)據(jù)存儲(chǔ)于緩存區(qū)。4.如權(quán)利要求3所述的優(yōu)化Canvas繪制性能的方法,其中,根據(jù)所述壓縮紋理數(shù)據(jù)創(chuàng)建所述非壓縮位圖的壓縮紋理前包括: 查找所述緩存區(qū)中是否存在所述壓縮紋理數(shù)據(jù), 當(dāng)所述緩存區(qū)中存在所述壓縮紋理數(shù)據(jù)時(shí),從所述緩存區(qū)中獲取所述壓縮紋理數(shù)據(jù)。5.如權(quán)利要求1-4任意一項(xiàng)所述的優(yōu)化Canvas繪制性能的方法,其中,壓縮解碼后的非壓縮位圖,生成與所述非壓縮位圖相對(duì)應(yīng)的壓縮紋理數(shù)據(jù)前包括: 根據(jù)預(yù)設(shè)條件判斷所述非壓縮位圖是否能夠進(jìn)行紋理壓縮,其中, 所述預(yù)設(shè)條件為:非壓縮位圖為不可變、非壓縮位圖的寬度小于或者等于設(shè)備支持的最大紋理寬度并且大于或者等于128像素、所述非壓縮位圖的繪制次數(shù)超過(guò)設(shè)定的閾值; 當(dāng)所述非壓縮位圖滿足上述預(yù)設(shè)條件中的一項(xiàng)或者多項(xiàng)組合時(shí),即判斷所述非壓縮位圖能夠進(jìn)行紋理壓縮。6.一種優(yōu)化Canvas繪制性能的裝置,包括: 壓縮紋理數(shù)據(jù)生成單元,用于壓縮解碼后的非壓縮位圖,生成與所述非壓縮位圖相對(duì)應(yīng)的壓縮紋理數(shù)據(jù); 壓縮紋理創(chuàng)建單元,用于根據(jù)所述壓縮紋理數(shù)據(jù)生成單元所生成的壓縮紋理數(shù)據(jù)創(chuàng)建所述非壓縮位圖的壓縮紋理; 繪制單元,用于將所述壓縮紋理創(chuàng)建單元所創(chuàng)建的壓縮紋理繪制到Canvas上。7.如權(quán)利要求6所述的優(yōu)化Canvas繪制性能的裝置,其中,所述壓縮紋理數(shù)據(jù)生成單元包括,壓縮模塊和生成模塊, 壓縮模塊用于壓縮解碼后的非壓縮位圖;生成模塊用于生成與所述非壓縮位圖相對(duì)應(yīng)的壓縮紋理數(shù)據(jù)。8.如權(quán)利要求6所述的優(yōu)化Canvas繪制性能的裝置,還包括: 存儲(chǔ)單元,用于將壓縮紋理數(shù)據(jù)生成單元生成的與所述非壓縮位圖相對(duì)應(yīng)的壓縮紋理數(shù)據(jù)與非壓縮位圖的位圖1D相對(duì)應(yīng)的存儲(chǔ)。9.如權(quán)利要求8所述的優(yōu)化Canvas繪制性能的裝置,其中,所述壓縮紋理創(chuàng)建單元進(jìn)一步包括: 壓縮紋理數(shù)據(jù)獲取單元,用于查找所述存儲(chǔ)單元中是否存在所述壓縮紋理數(shù)據(jù),當(dāng)所述存儲(chǔ)單元中存在所述壓縮紋理數(shù)據(jù)時(shí),從所述存儲(chǔ)單元中獲取所述壓縮紋理數(shù)據(jù),根據(jù)所獲取的壓縮紋理數(shù)據(jù)創(chuàng)建所述非壓縮位圖的壓縮紋理。10.如權(quán)利要求7?9任意一項(xiàng)所述的優(yōu)化Canvas繪制性能的裝置,還包括判斷單元,用于根據(jù)預(yù)設(shè)條件判斷所述非壓縮位圖是否能夠進(jìn)行紋理壓縮,其中, 所述預(yù)設(shè)條件為:非壓縮位圖為不可變、非壓縮位圖的寬度小于或者等于設(shè)備支持的最大紋理寬度并且大于或者等于128像素、所述非壓縮位圖的繪制次數(shù)超過(guò)設(shè)定的閾值;當(dāng)所述非壓縮位圖滿足上述預(yù)設(shè)條件中的一項(xiàng)或者多項(xiàng)組合時(shí),即判斷所述非壓縮位圖能夠進(jìn)行紋理壓縮。
【專利摘要】本發(fā)明提供一種優(yōu)化Canvas繪制性能的方法及裝置,其中的方法包括:壓縮解碼后的非壓縮位圖,獲得與非壓縮位圖相對(duì)應(yīng)的壓縮紋理數(shù)據(jù);根據(jù)壓縮紋理數(shù)據(jù)創(chuàng)建非壓縮位圖的壓縮紋理;將壓縮紋理繪制到Canvas上。通過(guò)本發(fā)明能夠減少紋理對(duì)內(nèi)存的占用量,同時(shí)提高GPU對(duì)紋理進(jìn)行貼圖操作的性能。
【IPC分類】G06T15/00, G06T1/20
【公開號(hào)】CN105096367
【申請(qǐng)?zhí)枴緾N201410183109
【發(fā)明人】梁捷, 易旭昕
【申請(qǐng)人】廣州市動(dòng)景計(jì)算機(jī)科技有限公司
【公開日】2015年11月25日
【申請(qǐng)日】2014年4月30日