場景資源的加載方法和加載裝置制造方法
【專利摘要】本發(fā)明公開了一種場景資源的加載方法和裝置。所述方法包括:渲染線程、讀取線程和解析線程:渲染線程將包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)加入任務(wù)隊列,激活所述讀取線程;讀取線程根據(jù)任務(wù)隊列中的待加載資源名,按照所述資源數(shù)據(jù)結(jié)構(gòu)的格式,向內(nèi)存緩沖區(qū)中讀入相應(yīng)的資源文件,激活所述解析線程;解析線程對所述內(nèi)存緩沖區(qū)中的資源文件進行解析,生成相應(yīng)的解析數(shù)據(jù);渲染線程查詢所述內(nèi)存緩沖區(qū),在預(yù)定的時間內(nèi),根據(jù)內(nèi)存緩沖區(qū)中的解析數(shù)據(jù),創(chuàng)建相應(yīng)的對象;其中,讀取線程和解析線程被激活后,與渲染線程并行執(zhí)行。本發(fā)明緩解了惰性加載方式加載場景在短時間內(nèi)出現(xiàn)大量物體時的卡頓現(xiàn)象,提高了惰性加載方式中場景資源的加載效率。
【專利說明】場景資源的加載方法和加載裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù)和多線程控制【技術(shù)領(lǐng)域】,尤其涉及一種場景資源的加載方法和加載裝置。
【背景技術(shù)】
[0002]隨著計算機技術(shù)的不斷發(fā)展,計算機已經(jīng)成為人們?nèi)粘5墓ぷ?、生活、娛樂和休閑中必不可少的一項必需品?;谟嬎銠C開發(fā)的游戲,尤其是大型的3D(Three Dimensions,三維數(shù)字化)游戲正在日益受到廣大用戶的歡迎。
[0003]在計算機終端顯示3D游戲場景之前,需要首先將場景的模型和貼圖等資源載入到內(nèi)存和顯存中。在現(xiàn)有技術(shù)中,通常采用一次加載或惰性加載的方法加載游戲場景。一次加載是指在游戲玩家進入一個場景的時候,一次性加載與該場景對應(yīng)的所有資源。這種方法的缺點是:進入場景需要長時間的等待;并且對于大型游戲中的大型場景,內(nèi)存和顯存無法容納整個場景的資源;另外,對于網(wǎng)絡(luò)游戲來說,一些場景中的物體(隨機掉落的裝備、隨機出現(xiàn)的角色等)是隨機出現(xiàn)的,無法在進入該場景時立刻判斷是否應(yīng)該加載該物體的資源。惰性加載是指當場景中的一個物體首次被玩家看見時加載該物體的資源。但是,如果在短時間內(nèi)出現(xiàn)了大量物體,加載過程就會耗費大量的時間。因此,使用這種方法就會出現(xiàn)卡頓(畫面卡住)的現(xiàn)象。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明提供了一種場景資源的加載方法和加載裝置,以減少短時間內(nèi)加載大量物體導致的畫面卡頓現(xiàn)象。
[0005]在第一方面,本發(fā)明實施例提供了一種場景資源的加載方法,包括:渲染線程、讀取線程和解析線程:
[0006]所述渲染線程將包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)加入任務(wù)隊列,激活所述讀取線程;
[0007]所述讀取線程根據(jù)任務(wù)隊列中的待加載資源名,按照所述資源數(shù)據(jù)結(jié)構(gòu)的格式,向內(nèi)存緩沖區(qū)中讀入相應(yīng)的資源文件,激活所述解析線程;
[0008]所述解析線程對所述內(nèi)存緩沖區(qū)中的資源文件進行解析,生成相應(yīng)的解析數(shù)據(jù);
[0009]所述渲染線程查詢所述內(nèi)存緩沖區(qū),在預(yù)定的時間內(nèi),根據(jù)所述內(nèi)存緩沖區(qū)中的解析數(shù)據(jù),創(chuàng)建相應(yīng)的對象;
[0010]其中,所述讀取線程和所述解析線程被激活后,與所述渲染線程并行執(zhí)行。
[0011]在第二種可能的實現(xiàn)方式中,當所述讀取線程將與任務(wù)隊列中待加載資源名對應(yīng)的資源文件全部讀入內(nèi)存緩沖區(qū)時,所述讀取線程進入休眠狀態(tài)。
[0012]進一步的,當所述解析線程將所述內(nèi)存緩沖區(qū)中的資源文件全部解析完成時,所述解析線程進入休眠狀態(tài)。
[0013]在第二方面,本發(fā)明實施例提供了一種場景資源的加載裝置,包括渲染單元、讀取單元和解析單元:
[0014]所述渲染單元,用于將包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)加入任務(wù)隊列,激活所述讀取單元;
[0015]所述讀取單元,用于根據(jù)任務(wù)隊列中的待加載資源名,按照所述資源數(shù)據(jù)結(jié)構(gòu)的格式,向內(nèi)存緩沖區(qū)中讀入相應(yīng)的資源文件,激活所述解析單元;
[0016]所述解析單元,用于對所述內(nèi)存緩沖區(qū)中的資源文件進行解析,生成相應(yīng)的解析數(shù)據(jù);
[0017]所述渲染單元查詢所述內(nèi)存緩沖區(qū),在預(yù)定的時間內(nèi),根據(jù)所述內(nèi)存緩沖區(qū)中的解析數(shù)據(jù),創(chuàng)建相應(yīng)的對象;
[0018]其中,所述讀取單元和所述解析單元被激活后,與所述渲染單元并行執(zhí)行。
[0019]在第一種可能的實現(xiàn)方式中,當所述讀取單元將與任務(wù)隊列中待加載資源名對應(yīng)的資源文件全部讀入內(nèi)存緩沖區(qū)時,所述讀取單元進入休眠狀態(tài)。
[0020]進一步的,當所述解析單元將所述內(nèi)存緩沖區(qū)中的資源文件全部解析完成時,所述解析線程進入休眠狀態(tài)。
[0021]本發(fā)明實施例提供的場景資源的加載方法和加載裝置,通過渲染線程完成將包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)加入任務(wù)隊列,增加兩個線程分別完成對該待加載資源文件的讀取和解析,通過渲染線程、讀取線程和解析線程的并行處理,使得渲染線程在一幀的處理時間內(nèi)還可以進行其他的處理工作,緩解了惰性加載方式加載場景在短時間內(nèi)出現(xiàn)大量物體時的卡頓現(xiàn)象,提高了惰性加載方式中場景資源的加載效率。
【專利附圖】
【附圖說明】
[0022]圖1是本發(fā)明第一實施例提供的場景資源加載方法的流程圖;
[0023]圖2是本發(fā)明第一實施例提供的方法的加載場景資源的示意圖。
[0024]圖3是本發(fā)明第二實施例提供的場景資源加載裝置的結(jié)構(gòu)圖。
【具體實施方式】
[0025]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖對本發(fā)明具體實施例作進一步的詳細描述??梢岳斫獾氖?,此處所描述的具體實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部內(nèi)容。
[0026]線程(Thread)是程序中一個單一的順序控制流程。在單個程序中同時運行多個線程完成不同的工作,稱為多線程。多個線程共享數(shù)據(jù)空間,每個線程有自己的執(zhí)行堆棧和程序計數(shù)器為其執(zhí)行上下文。多線程主要是為了節(jié)約CPU時間,提高CPU利用率。使用線程可以把占據(jù)時間長的程序中的任務(wù)放到后臺去處理,在一些等待的任務(wù)實現(xiàn)上,如用戶輸入、文件讀寫和網(wǎng)絡(luò)收發(fā)數(shù)據(jù)等,使用線程可以釋放一些珍貴的資源,如內(nèi)存占用等。
[0027]第一實施例
[0028]圖1是本發(fā)明第一實施例提供的場景資源的加載方法的流程圖,本實施例的方法可以由場景資源的加載裝置來執(zhí)行,該裝置可通過硬件和/或軟件的方式實現(xiàn)。典型的,可以通過計算機中的處理器來執(zhí)行本實施例的方法,該處理器可以包括一個或者多個完整的計算引擎(內(nèi)核)。本實施例的方法包括渲染線程、讀取線程和解析線程,其中,讀取線程與解析線程為渲染線程下的兩個子線程,與渲染線程共用特定的資源,例如,內(nèi)存緩沖區(qū)。
[0029]本實施例的方法具體包括如下步驟:
[0030]步驟110、所述渲染線程將包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)加入任務(wù)隊列,激活所述讀取線程;
[0031 ] 為了響應(yīng)不同的應(yīng)用程序,CPU給各個進程分配不同的處理時間,每個進程被分配的處理時間段,稱作該進程的時間片。其中,當一個程序啟動時,就有一個進程被操作系統(tǒng)
(OS)執(zhí)行,與此同時一個線程也立刻運行,該線程通常叫做程序的主線程。
[0032]在本實施例中,將串行的場景資源的加載進程分為并行的渲染線程、讀取線程和解析線程(多線程)。其中,當場景資源的加載進程被執(zhí)行時,渲染線程立即被執(zhí)行。其中,渲染線程可以激活讀取線程,讀取線程可以激活解析線程。
[0033]在本實施例中,全部場景資源可以預(yù)先存儲于外部存儲器或者磁盤存儲器的一個或者多個資源包中,通過客戶端的人機交互操作觸發(fā)場景資源的加載進程(例如:邊緣觸發(fā)、事件觸發(fā)或者讀寫觸發(fā)等),此時,CPU為渲染線程分配時間片。在該時間片內(nèi),渲染線程將包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)加入任務(wù)隊列,典型的,在主線程開始執(zhí)行時,創(chuàng)建一個對應(yīng)的任務(wù)隊列,將包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)加入任務(wù)隊列,激活所述讀取線程,所述讀取線程被激活后,與所述渲染線程并行執(zhí)行。
[0034]在一個例子中,上述資源數(shù)據(jù)結(jié)構(gòu)中包括:資源名、資源類型、等待隊列頭指針、可利用資源隊列頭指針、資源分配程序入口地址等。
[0035]當然,本領(lǐng)域技術(shù)人員可以理解,上述資源數(shù)據(jù)結(jié)構(gòu)的內(nèi)容可以根據(jù)實際情況進行預(yù)設(shè),對此并不限定。
[0036]在本實施例的一個優(yōu)選的實施方式中,當渲染線程完整的將一個包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)加入任務(wù)隊列后,激活所述讀取線程。
[0037]在本實施例的另一個優(yōu)選的實施方式中,渲染線程將預(yù)定時間內(nèi)創(chuàng)建的包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)或者預(yù)定個數(shù)的包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)加入任務(wù)隊列后,激活所述讀取線程。
[0038]步驟120、所述讀取線程根據(jù)任務(wù)隊列中的待加載資源名,按照所述資源數(shù)據(jù)結(jié)構(gòu)的格式,向內(nèi)存緩沖區(qū)中讀入相應(yīng)的資源文件,激活所述解析線程。
[0039]在本實施例中,當讀取線程被激活后,根據(jù)任務(wù)隊列中待加載資源名,通過計算機的I/O (Input/Outpue,輸入輸出)口,將外部存儲器或者磁盤存儲器中相應(yīng)的資源文件讀入內(nèi)存緩沖區(qū)中,例如,使用ReadFile函數(shù)進行資源文件的讀入過程。
[0040]其中,當讀取線程通過計算機的I/O 口向內(nèi)存緩沖區(qū)中讀入相應(yīng)的資源時,該讀取線程并不占用CPU,此時,可以將CPU讓出,使得CPU可以執(zhí)行其他的處理任務(wù)。
[0041]在本實施例的一個優(yōu)選的實施方式中,當讀取線程將與任務(wù)隊列中的資源名對應(yīng)的預(yù)定個數(shù)的待加載文件完整的讀入到內(nèi)存緩沖區(qū)后,激活所述解析線程。所述解析線程被激活后,與渲染線程、讀取線程并行執(zhí)行。
[0042]作為實例而非限定,預(yù)定個數(shù)可以為I個、2個或者4個等,本領(lǐng)域技術(shù)人員可以根據(jù)計算機的處理速度或者場景資源的個數(shù)等因素對該參數(shù)進行預(yù)設(shè),對此并不限定。
[0043]在本實施例的另一個優(yōu)選的實施方式中,讀取線程經(jīng)過預(yù)定時間的讀取處理后,激活所述解析線程。
[0044]步驟130、所述解析線程對所述內(nèi)存緩沖區(qū)中的資源文件進行解析,生成相應(yīng)的解析數(shù)據(jù)。
[0045]在本實施例中,當所述解析線程被激活后,對所述內(nèi)存緩沖區(qū)中的資源文件進行解析,判斷貼圖格式、尺寸和模型頂點格式等一些信息,并填充所述資源數(shù)據(jù)結(jié)構(gòu)的相應(yīng)字段。
[0046]步驟140、渲染線程查詢所述內(nèi)存緩沖區(qū),在預(yù)定的時間內(nèi),根據(jù)所述內(nèi)存緩沖區(qū)中的解析數(shù)據(jù),創(chuàng)建相應(yīng)的對象。
[0047]在本實施例中,渲染單元查詢所述內(nèi)存緩沖區(qū),在預(yù)定的時間內(nèi),將所述內(nèi)存緩沖區(qū)中的數(shù)據(jù)提交到顯存,最終完成D3D對象的創(chuàng)建。
[0048]其中,CPU為渲染線程分配時間片,渲染線程在獲取CPU使用權(quán)后,在預(yù)定的時間內(nèi),檢測與讀取線程和解析線程共用的內(nèi)存緩沖區(qū),在內(nèi)存緩沖區(qū)中預(yù)定的存儲區(qū)域中獲取解析數(shù)據(jù),根據(jù)獲取的解析數(shù)據(jù),創(chuàng)建相應(yīng)的對象,典型的,創(chuàng)建D3D(Direct3D,微軟為提高3D游戲在Windows中的顯示性能而開發(fā)的顯示程序接口)對象,例如,倉Il建D3D貼圖、倉Il建D3D頂點緩沖區(qū)等。其中,上述預(yù)定的時間在該渲染線程不同的處理幀中,可以相同,也可以不同,對此并不限定。
[0049]也就是說,在渲染線程每一幀的處理時間內(nèi),都會根據(jù)內(nèi)存緩沖區(qū)中的解析數(shù)據(jù)創(chuàng)建對象。其中,渲染線程分配用于創(chuàng)建對象的時間可以為預(yù)設(shè)的固定值,也可以是一個變化值。
[0050]其中,當渲染線程根據(jù)待加載資源創(chuàng)建相應(yīng)的對象后,通過預(yù)定的處理方法,例如渲染技術(shù),即可實現(xiàn)場景資源的加載。
[0051]在圖2中示出了使用本發(fā)明實施例的方法的加載場景資源的示意圖。如圖2所示:作為示例而非限定,共包括3個待加載的資源:資源1、資源2和資源3,渲染線程首先將資源I的包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)加入任務(wù)隊列,之后就激活讀取線程,讀取線程被激活后與渲染線程并行執(zhí)行。在渲染線程向任務(wù)隊列中加入資源2的包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)的同時,讀取線程將資源I對應(yīng)的資源文件讀入內(nèi)存緩沖區(qū)中,當讀取線程將資源I對應(yīng)的資源文件完整的讀入內(nèi)存緩沖區(qū)后,激活解析線程,解析線程被激活后與渲染線程和讀取線程并行執(zhí)行。在主控線向任務(wù)隊列中加入資源3的包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)、讀取線程將資源2對應(yīng)的資源文件讀入內(nèi)存緩沖區(qū)中的同時,解析線程解析內(nèi)存緩沖區(qū)中與資源I對應(yīng)的資源文件,并將解析結(jié)果存入內(nèi)存緩沖區(qū)中。在渲染線程的一個時隙中,渲染線程根據(jù)內(nèi)存緩存區(qū)中的解析結(jié)果創(chuàng)建資源I的D3D對象,同時,讀取線程將資源3對應(yīng)的資源文件讀入到內(nèi)存緩沖區(qū)中,解析線程解析內(nèi)存緩沖區(qū)中的資源2對應(yīng)的資源文件。之后的一個時隙中,讀取線程進入休眠狀態(tài),解析線程解析內(nèi)存緩沖區(qū)中的資源3對應(yīng)的資源文件,渲染線程根據(jù)內(nèi)存緩存區(qū)中的解析結(jié)果創(chuàng)建資源2的D3D對象。之后的一個時隙中,解析線程和讀取線程處于休眠狀態(tài),渲染線程根據(jù)內(nèi)存緩存區(qū)中的解析結(jié)果創(chuàng)建資源3的D3D對象??梢岳斫獾氖?,以上只是以3個待加載資源為例介紹,在實際應(yīng)用中,可以根據(jù)與上述示例過程相同或者相近的過程加載預(yù)定個數(shù)的資源文件,此處不再贅述。
[0052]其中,當讀取線程將任務(wù)隊列中的頭部信息對應(yīng)的資源文件全部讀入內(nèi)存緩沖區(qū)后,讀取線程進入休眠狀態(tài),直到再次被渲染線程喚醒;當解析線程將任務(wù)隊列中的內(nèi)存緩沖區(qū)中的資源文件全部解析完成后,將進入休眠狀態(tài),直到再次被讀取線程喚醒。本發(fā)明實施例通過將資源加載進程分為渲染線程、讀取線程和解析線程,可以實現(xiàn)資源在各個線程中流轉(zhuǎn),在各個線程中完成各個階段的加載。
[0053]本發(fā)明實施例提供的場景資源的加載方法,通過渲染線程完成將包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)加入任務(wù)隊列,增加兩個線程分別完成對該待加載資源文件的讀取和解析,通過渲染線程、讀取線程和解析線程的并行處理,使得渲染線程在一幀的處理時間內(nèi)還可以進行其他的處理工作,緩解了惰性加載方式加載場景在短時間內(nèi)出現(xiàn)大量物體時的卡頓現(xiàn)象,提高了惰性加載方式中場景資源的加載效率。
[0054]在上述技術(shù)方案的技術(shù)上,當所述讀取線程將與任務(wù)隊列中待加載的頭部信息對應(yīng)的資源文件全部讀入內(nèi)存緩沖區(qū)時,所述讀取線程進入休眠狀態(tài)。這樣設(shè)置的好處是,當讀取線程沒有讀取任務(wù)需要處理時,進入休眠狀態(tài),交出對處理器時間片的使用權(quán),進一步提高了整個系統(tǒng)的處理效率。
[0055]在上述各技術(shù)方案的基礎(chǔ)上,當所述解析線程將所述內(nèi)存緩沖區(qū)中的資源文件全部解析完成時,所述解析線程進入休眠狀態(tài)。這樣設(shè)置的好處是,當解析線程沒有讀取任務(wù)需要處理時,進入休眠狀態(tài),交出對處理器時間片的使用權(quán),進一步提高了整個系統(tǒng)的處理效率。
[0056]第二實施例
[0057]在圖3中示出了本發(fā)明第二實施例提供的場景資源的加載裝置的結(jié)構(gòu)圖。如圖3所示,所述裝置包括:渲染單元31、讀取單元32和解析單元33,其中:
[0058]渲染單元31,用于將包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)加入任務(wù)隊列34,激活讀取單元32 ;
[0059]讀取單元32,用于根據(jù)任務(wù)隊列34中的待加載資源名,按照所述資源數(shù)據(jù)結(jié)構(gòu)的格式,向內(nèi)存緩沖區(qū)35中讀入相應(yīng)的資源文件,激活解析單元33 ;
[0060]解析單元33,用于對內(nèi)存緩沖區(qū)35中的資源文件進行解析,生成相應(yīng)的解析數(shù)據(jù);
[0061]渲染單元31用于查詢內(nèi)存緩沖區(qū)35,在預(yù)定的時間內(nèi),根據(jù)內(nèi)存緩沖區(qū)35中的解析數(shù)據(jù),創(chuàng)建相應(yīng)的對象;
[0062]其中,讀取單元32和解析單元33被激活后,與渲染單元31并行執(zhí)行。
[0063]本發(fā)明實施例提供的場景資源的加載裝置,通過渲染線程完成將包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)加入任務(wù)隊列,增加兩個線程單元分別完成對該待加載資源文件的讀取和解析,通過渲染單元、讀取單元和解析單元的并行處理,使得渲染單元在一幀的處理時間內(nèi)還可以進行其他的處理工作,緩解了惰性加載方式加載場景在短時間內(nèi)出現(xiàn)大量物體時的卡頓現(xiàn)象,提高了惰性加載方式中場景資源的加載效率。
[0064]在上述技術(shù)方案的基礎(chǔ)上,當所述讀取單元將與任務(wù)隊列中待加載的頭部信息對應(yīng)的資源文件全部讀入內(nèi)存緩沖區(qū)時,所述讀取單元進入休眠狀態(tài)。
[0065]在上述各技術(shù)方案的基礎(chǔ)上,當所述解析單元將所述內(nèi)存緩沖區(qū)中的資源文件全部解析完成時,所述解析線程進入休眠狀態(tài)。
[0066]本發(fā)明實施例所提供的場景資源的加載裝置可以用于執(zhí)行本發(fā)明任意實施例提供的場景資源的加載方法,具備相應(yīng)的功能模塊,達到同樣的技術(shù)效果。
[0067]顯然,本領(lǐng)域技術(shù)人員應(yīng)該明白,本發(fā)明實施例可以用計算機裝置可執(zhí)行的程序來實現(xiàn),從而可以將它們存儲在存儲裝置中由處理器來執(zhí)行,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等;或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件的結(jié)合。
[0068]以上所述僅為本發(fā)明的優(yōu)選實施例,并不用于限制本發(fā)明,對于本領(lǐng)域技術(shù)人員而言,本發(fā)明可以有各種改動和變化。凡在本發(fā)明的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種場景資源的加載方法,其特征在于,包括:渲染線程、讀取線程和解析線程: 所述渲染線程將包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)加入任務(wù)隊列,激活所述讀取線程; 所述讀取線程根據(jù)任務(wù)隊列中的待加載資源名,按照所述資源數(shù)據(jù)結(jié)構(gòu)的格式,向內(nèi)存緩沖區(qū)中讀入相應(yīng)的資源文件,激活所述解析線程; 所述解析線程對所述內(nèi)存緩沖區(qū)中的資源文件進行解析,生成相應(yīng)的解析數(shù)據(jù);所述渲染線程查詢所述內(nèi)存緩沖區(qū),在預(yù)定的時間內(nèi),根據(jù)所述內(nèi)存緩沖區(qū)中的解析數(shù)據(jù),創(chuàng)建相應(yīng)的對象; 其中,所述讀取線程和所述解析線程被激活后,與所述渲染線程并行執(zhí)行。
2.根據(jù)權(quán)利要求1所述的場景資源的加載方法,其特征在于,當所述讀取線程將與任務(wù)隊列中待加載資源名對應(yīng)的資源文件全部讀入內(nèi)存緩沖區(qū)時,所述讀取線程進入休眠狀態(tài)。
3.根據(jù)權(quán)利要求1或2所述的場景資源的加載方法,其特征在于,當所述解析線程將所述內(nèi)存緩沖區(qū)中的資源文件全部解析完成時,所述解析線程進入休眠狀態(tài)。
4.一種場景資源的加載裝置,其特征在于,包括渲染單元、讀取單元和解析單元: 所述渲染單元,用于將包括待加載資源名的資源數(shù)據(jù)結(jié)構(gòu)加入任務(wù)隊列,激活所述讀取單元; 所述讀取單元,用于根據(jù)任務(wù)隊列中的待加載資源名,按照所述資源數(shù)據(jù)結(jié)構(gòu)的格式,向內(nèi)存緩沖區(qū)中讀入相應(yīng)的資源文件,激活所述解析單元; 所述解析單元,用于對所述內(nèi)存緩沖區(qū)中的資源文件進行解析,生成相應(yīng)的解析數(shù)據(jù); 所述渲染單元查詢所述內(nèi)存緩沖區(qū),在預(yù)定的時間內(nèi),根據(jù)所述內(nèi)存緩沖區(qū)中的解析數(shù)據(jù),創(chuàng)建相應(yīng)的對象; 其中,所述讀取單元和所述解析單元被激活后,與所述渲染單元并行執(zhí)行。
5.根據(jù)權(quán)利要求4所述的場景資源的加載裝置,其特征在于,當所述讀取單元將與任務(wù)隊列中待加載資源名對應(yīng)的資源文件全部讀入內(nèi)存緩沖區(qū)時,所述讀取單元進入休眠狀態(tài)。
6.根據(jù)權(quán)利要求4或5所述的場景資源的加載裝置,其特征在于,當所述解析單元將所述內(nèi)存緩沖區(qū)中的資源文件全部解析完成時,所述解析線程進入休眠狀態(tài)。
【文檔編號】G06F9/445GK103631565SQ201310573644
【公開日】2014年3月12日 申請日期:2013年11月13日 優(yōu)先權(quán)日:2013年11月13日
【發(fā)明者】王衎 申請人:北京像素軟件科技股份有限公司