0034]S106:在獲取到的可用紋理塊上繪制頁(yè)面內(nèi)容,以進(jìn)行頁(yè)面緩存,其中,將繪制有頁(yè)面內(nèi)容的紋理塊最終被傳輸?shù)斤@示屏幕上即可實(shí)現(xiàn)頁(yè)面的顯示。
[0035]本發(fā)明實(shí)施例所提供的瀏覽器使用紋理的方法,通過(guò)基于瀏覽器所能使用的紋理總內(nèi)存大小的上限建立紋理池,進(jìn)而從紋理池中獲取可用紋理塊,并在獲取到的可用紋理塊上繪制頁(yè)面內(nèi)容,實(shí)現(xiàn)了基于終端設(shè)備的本身的內(nèi)存能量進(jìn)行頁(yè)面的緩存,相比現(xiàn)有技術(shù)中按照“頁(yè)面可見(jiàn)區(qū)域周圍幾屏高度”這樣的物理面積進(jìn)行頁(yè)面緩存的方式而言,基于終端設(shè)備的本身的內(nèi)存能量進(jìn)行頁(yè)面緩存的方式能夠盡量多的緩存頁(yè)面內(nèi)容,實(shí)現(xiàn)了提高對(duì)頁(yè)面內(nèi)容進(jìn)行繪制的能力和速度,避免出現(xiàn)繪制延遲,解決了現(xiàn)有技術(shù)中的頁(yè)面緩存方案容易導(dǎo)致頁(yè)面顯示空白的問(wèn)題,進(jìn)而達(dá)到了提高頁(yè)面緩存效率和緩存流暢度的效果。
[0036]圖2是根據(jù)本發(fā)明優(yōu)選實(shí)施例的瀏覽器使用紋理的方法的流程圖,如圖2所示,在本發(fā)明優(yōu)選實(shí)施例中,步驟S104中從紋理池中獲取可用紋理塊主要包括如下步驟S201至步驟S202:
[0037]S201:判斷紋理池中是否存在處于空閑狀態(tài)的紋理塊,即,當(dāng)需要進(jìn)行新頁(yè)面內(nèi)容緩存時(shí),先判斷紋理池中是否存在處于空閑狀態(tài)的紋理塊。
[0038]S202:在判斷出紋理池中存在處于空閑狀態(tài)的紋理塊的情況下,從處于空閑狀態(tài)的紋理塊中獲取可用紋理塊,具體地,可以提取出一個(gè)紋理塊作為可用紋理塊,如果處于空閑狀態(tài)的紋理塊的數(shù)量為多個(gè),也可以提取出多個(gè)處于空閑狀態(tài)的紋理塊作為可用紋理塊。
[0039]如果紋理池中還存在處于空閑狀態(tài)的紋理塊的話,說(shuō)明紋理塊所占用的內(nèi)容還未達(dá)到瀏覽器所能使用的紋理總內(nèi)存大小的上限,此種情況下,通過(guò)從處于空閑狀態(tài)的紋理塊中提取可用紋理塊,而不是淘汰當(dāng)前頁(yè)面的紋理塊,實(shí)現(xiàn)了在上下滾動(dòng)頁(yè)面過(guò)程中,向下滾動(dòng)之后在向上滾動(dòng)的話,不會(huì)因已繪制過(guò)的頁(yè)面內(nèi)容被丟失而需要重新繪制,這樣,只需在第一次向下滾動(dòng)頁(yè)面的時(shí)候,繪制相關(guān)內(nèi)容到紋理塊上,而再向上滾動(dòng)時(shí),則無(wú)需重新繪制,上下滾動(dòng)過(guò)程中所需時(shí)間會(huì)很少,頁(yè)面內(nèi)容的顯示幾乎與滾動(dòng)同步,進(jìn)一步提高了頁(yè)面緩存效率。
[0040]其中,在本發(fā)明實(shí)施例中,對(duì)于處于后端的頁(yè)面,可以只緩存可見(jiàn)區(qū)域的紋理塊,艮P,可以只將可見(jiàn)區(qū)域的內(nèi)容繪制到紋理塊上,承載其他區(qū)域內(nèi)容的紋理塊均可以被釋放到紋理塊組成的紋理池中。
[0041]進(jìn)一步地,在判斷出紋理池中不存在處于空閑狀態(tài)的紋理塊的情況下,步驟S104中從紋理池中獲取可用紋理塊還包括步驟S203和步驟S204:
[0042]S203:判斷第一紋理塊中是否存在處于非可見(jiàn)區(qū)域的紋理塊,其中,第一紋理塊為紋理池中繪制有后臺(tái)頁(yè)面內(nèi)容的紋理塊,即,判斷對(duì)應(yīng)后臺(tái)頁(yè)面的紋理塊中是否存在處于非可見(jiàn)區(qū)域的紋理塊,非可見(jiàn)區(qū)域是相當(dāng)可見(jiàn)區(qū)域而言,可見(jiàn)區(qū)域是指終端設(shè)備瀏覽器上的可見(jiàn)部分,通常為瀏覽器窗口的大小,相應(yīng)地,除去顯示在瀏覽器上的部分,頁(yè)面的剩余部分則為非可見(jiàn)區(qū)域。
[0043]S204:在判斷出第一紋理塊中存在處于非可見(jiàn)區(qū)域的紋理塊的情況下,從第一紋理塊中處于非可見(jiàn)區(qū)域的紋理塊中獲取可用紋理塊,即,從后臺(tái)頁(yè)面的非可見(jiàn)區(qū)域的紋理塊中獲取可用紋理塊,其中,可以選用非可見(jiàn)區(qū)域的紋理塊中最早繪制頁(yè)面內(nèi)容的紋理塊,具體地,本發(fā)明優(yōu)選實(shí)施例的頁(yè)面緩存方法還包括:將繪制計(jì)數(shù)賦值給繪制頁(yè)面內(nèi)容時(shí)所使用的紋理塊,其中,繪制計(jì)數(shù)的初始值為預(yù)設(shè)值,每繪制一次頁(yè)面內(nèi)容,將繪制計(jì)數(shù)加一,通過(guò)賦值繪制計(jì)數(shù)至繪制頁(yè)面內(nèi)容所使用的紋理塊,即可通過(guò)以下方式從第一紋理塊中處于非可見(jiàn)區(qū)域的紋理塊中提取出可用紋理塊:首先,獲取處于非可見(jiàn)區(qū)域的紋理塊中繪制計(jì)數(shù)的數(shù)值最小的紋理塊;然后,確定獲取到的繪制計(jì)數(shù)的數(shù)值最小的紋理塊為可用紋理塊。
[0044]更進(jìn)一步地,在判斷出第一紋理塊中不存在處于非可見(jiàn)區(qū)域的紋理塊的情況下,步驟S104中從紋理池中獲取可用紋理塊還包括步驟S205至步驟S208:
[0045]S205:獲取紋理池所占用內(nèi)存的總大小。
[0046]S206:判斷紋理池所占用內(nèi)存的總大小是否達(dá)到瀏覽器所能使用的紋理總內(nèi)存大小的上限。
[0047]S207:在判斷出紋理池所占用內(nèi)存的總大小未達(dá)到瀏覽器所能使用的紋理總內(nèi)存大小的上限的情況下,紋理池向操作系統(tǒng)申請(qǐng)紋理塊,即,從可使用內(nèi)存中申請(qǐng)一部分一部分內(nèi)存建立新的紋理塊。
[0048]S208:確定申請(qǐng)的紋理塊為可用紋理塊,S卩,確定新申請(qǐng)建立的紋理塊即為可用紋理塊。
[0049]再進(jìn)一步地,在判斷出紋理池所占用內(nèi)存的總大小達(dá)到瀏覽器所能使用的紋理總內(nèi)存大小的上限的情況下,步驟S104中從紋理池中獲取可用紋理塊還包括步驟S209至步驟S211:S209:判斷是否存在第二紋理塊,其中,第二紋理塊為繪制有當(dāng)前頁(yè)面內(nèi)容非緩存區(qū)域的紋理塊;S210a:在判斷出存在第二紋理塊的情況下,從第二紋理塊中取得可用紋理塊,具體地,獲取第二紋理塊中繪制計(jì)數(shù)的數(shù)值最小的紋理塊,或S210b:在判斷出不存在第二紋理塊的情況下,獲取第一紋理塊中繪制計(jì)數(shù)的數(shù)值最小的紋理塊;S211:確定獲取到的繪制計(jì)數(shù)的數(shù)值最小的紋理塊為可用紋理塊。
[0050]在本發(fā)明優(yōu)選實(shí)施例所提供的瀏覽器使用紋理的方法中,對(duì)于所有頁(yè)面的繪制,通過(guò)添加一個(gè)繪制計(jì)數(shù)的概念,每次繪制一次頁(yè)面,計(jì)數(shù)加1,這個(gè)計(jì)數(shù)將被賦予到這次所繪制的紋理塊上去,同一次繪制的紋理塊擁有相同的計(jì)數(shù)。紋理塊計(jì)數(shù)越大,表明是最近使用的塊,它被淘汰的優(yōu)先級(jí)最低。當(dāng)可用內(nèi)存資源(可用紋理塊所消耗的內(nèi)存)達(dá)到預(yù)估的上限時(shí),紋理池將淘汰計(jì)數(shù)最小的(即最久使用的)紋理塊以生成新的頁(yè)面內(nèi)容。
[0051]通過(guò)以上描述可以看出,本發(fā)明優(yōu)選實(shí)施例所提供的瀏覽器使用紋理的方法,實(shí)現(xiàn)了多個(gè)頁(yè)面共享紋理塊,并且分配給當(dāng)期頁(yè)面紋理塊資源的優(yōu)先級(jí)最高,實(shí)現(xiàn)了在瀏覽器打開(kāi)多個(gè)頁(yè)面的情況下,在保證其他頁(yè)面基本需要的情況下,優(yōu)先滿足當(dāng)期頁(yè)面的繪制資源需要,加大了當(dāng)前頁(yè)面的繪制緩存,進(jìn)一步提升了用戶瀏覽過(guò)程中的體驗(yàn)度。
[0052]需要說(shuō)明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書(shū)中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
[0053]通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實(shí)施例的方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如R0M/RAM、磁碟、光盤(pán))中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
[0054]實(shí)施例2
[0055]根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述瀏覽器使用紋理的方法的瀏覽器使用紋理的裝置,該瀏覽器使用紋理的裝置主要用于執(zhí)行本發(fā)明實(shí)施例上述內(nèi)容所提供的瀏覽器使用紋理的方法,以下對(duì)本發(fā)明實(shí)施例所提供的瀏覽器使用紋理的裝置做具體介紹:
[0056]圖3是根據(jù)本發(fā)明實(shí)施例的瀏覽器使用紋理的裝置的示意圖,如圖3所示,該瀏覽器使用紋理的裝置主要包括建立單元10、獲取單元20和繪制單元30,其中:
[0057]建立單元10用于建立紋理池,并確定紋理池所能使用的紋理總內(nèi)存大小的上限,其中,紋理用于承載瀏覽器的頁(yè)面內(nèi)容,具體地,瀏覽器所能使用的紋理總內(nèi)存大小的上限可以是對(duì)終端設(shè)備剩余內(nèi)存的一個(gè)預(yù)估,具體可根據(jù)終端設(shè)備自身的參數(shù)來(lái)確定,比如根據(jù)終端設(shè)備RAM大小以及實(shí)際可用的