亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

3d游戲渲染引擎的資源管理方法

文檔序號(hào):9432388閱讀:1044來(lái)源:國(guó)知局
3d游戲渲染引擎的資源管理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及3D游戲渲染引擎,尤其涉及一種輕量高效的3D游戲渲染引擎的資源管理方法。
【背景技術(shù)】
[0002]3D游戲渲染引擎,是各類(lèi)程序系統(tǒng)中的一類(lèi),相對(duì)于絕大部分其他程序系統(tǒng),它需要高頻率地執(zhí)行大規(guī)模的復(fù)雜計(jì)算,耗能高,因此需要基于合理的管控系統(tǒng)來(lái)實(shí)現(xiàn)3D游戲渲染引擎。
[0003]市面上各種3D圖像渲染引擎很多,其中,F(xiàn)lash Stage3D是跨平臺(tái)的系統(tǒng),可以運(yùn)行在PC、網(wǎng)頁(yè)、移動(dòng)端等。3D圖形渲染系統(tǒng)是通過(guò)實(shí)時(shí)計(jì)算來(lái)動(dòng)態(tài)生成圖像,而這其中的3D游戲渲染引擎是通過(guò)GPU實(shí)時(shí)運(yùn)算來(lái)實(shí)時(shí)呈現(xiàn)不同時(shí)間點(diǎn)不同視角的各種游戲畫(huà)面,以便讓游戲玩家感覺(jué)置身其中,因此其對(duì)于系統(tǒng)動(dòng)態(tài)運(yùn)行的性能要求比較苛刻。
[0004]3D游戲渲染系統(tǒng)要求能盡量快的計(jì)算出盡量豐富的畫(huà)面,以保證玩家的視覺(jué)體驗(yàn)和交互體驗(yàn)。一個(gè)游戲啟動(dòng)之后,玩家可能會(huì)持續(xù)玩很長(zhǎng)時(shí)間,經(jīng)歷不同的內(nèi)容,因此系統(tǒng)穩(wěn)定性是一個(gè)重要的需求。良好的效能和穩(wěn)定性是建立在良好的系統(tǒng)結(jié)構(gòu)和運(yùn)行機(jī)制基礎(chǔ)上的。對(duì)于游戲渲染程序系統(tǒng)而言,需要不停的通過(guò)代碼來(lái)操作CPU、內(nèi)存、GPU這些相關(guān)的硬件,因此完成相同的任務(wù),操作越少,效能就越高。操作少就是耗能少,由此可以說(shuō),優(yōu)秀的系統(tǒng)就是能量利用率高的系統(tǒng)。
[0005]現(xiàn)有技術(shù)中,基于Flash Stage3D的引擎市面上現(xiàn)有不少,例如:Away3D、Flare3D、Minko、Alternativa3D 這四個(gè)引擎。
[0006]Away3D引擎開(kāi)源,其系統(tǒng)結(jié)構(gòu)完善但是運(yùn)行機(jī)制繁冗,不能達(dá)到高性能。運(yùn)行時(shí)產(chǎn)生的大量冗余對(duì)象和冗余計(jì)算,隨著游戲運(yùn)行的時(shí)間增加會(huì)逐漸消耗掉越來(lái)越多的內(nèi)存以及CPU性能。
[0007]Flare3D引擎不開(kāi)源,其為商業(yè)引擎,能實(shí)現(xiàn)的畫(huà)面效果頗多,引擎體系結(jié)構(gòu)復(fù)雜,但是用于游戲中的大規(guī)模實(shí)施渲染性能平平,其沒(méi)有深入的考慮運(yùn)行時(shí)資源問(wèn)題,運(yùn)行時(shí)性能無(wú)法達(dá)到一個(gè)新的高度。
[0008]Minko引擎開(kāi)源,能實(shí)現(xiàn)頗多的畫(huà)面效果,系統(tǒng)結(jié)構(gòu)合理,只是沒(méi)有考慮有效的運(yùn)行時(shí)資源管理,而且冗余對(duì)象會(huì)在運(yùn)行時(shí)也會(huì)大量產(chǎn)生,所以無(wú)法作為真正意義上的游戲引擎。
[0009]Alternativa3D結(jié)構(gòu)完善,可以實(shí)現(xiàn)頗多的渲染效果,它是以游戲引擎為最終目的來(lái)實(shí)現(xiàn)的。只是引擎本身并沒(méi)有完全封裝運(yùn)行時(shí)資源管理機(jī)制,依舊需要用戶(hù)來(lái)做比較多的資源管理的底層工作。

【發(fā)明內(nèi)容】

[0010]本發(fā)明要解決的技術(shù)問(wèn)題是如何提高資源利用率。
[0011]為了解決這一技術(shù)問(wèn)題,本發(fā)明提供了一種3D游戲渲染引擎的資源管理方法,包括:
[0012]在進(jìn)行渲染計(jì)算和渲染時(shí),統(tǒng)一調(diào)配管理運(yùn)行時(shí)建構(gòu)出來(lái)的內(nèi)存資源、顯存資源以及從外部加載的原始靜態(tài)資源,使得其中的數(shù)據(jù)資源在未被銷(xiāo)毀前能被引用和使用到所有顯示對(duì)象中;且使得:
[0013]當(dāng)其中某個(gè)或某些數(shù)據(jù)資源在預(yù)設(shè)的第一時(shí)間內(nèi)未被引用和使用時(shí),相應(yīng)的數(shù)據(jù)資源被放至相應(yīng)的待銷(xiāo)毀隊(duì)列中;
[0014]待銷(xiāo)毀隊(duì)列中的數(shù)據(jù)資源經(jīng)過(guò)預(yù)設(shè)的第二時(shí)間后即被銷(xiāo)毀;若在第二時(shí)間內(nèi)又被引用或使用,則將相應(yīng)的數(shù)據(jù)資源從所述待銷(xiāo)毀隊(duì)列中移除。
[0015]可選的,在銷(xiāo)毀數(shù)據(jù)資源時(shí),優(yōu)先銷(xiāo)毀顯存資源數(shù)據(jù)和外部加載的非共享原始靜態(tài)資源,內(nèi)存資源數(shù)據(jù)次之,最后是外部加載的共享原始靜態(tài)資源數(shù)據(jù)。
[0016]可選的,在渲染中,還包括:
[0017]依據(jù)當(dāng)下所需的邏輯以及輸入的變化更新各顯示對(duì)象的靜態(tài)數(shù)據(jù)和/或動(dòng)態(tài)數(shù)據(jù),將更新后的所述靜態(tài)數(shù)據(jù)和/或動(dòng)態(tài)數(shù)據(jù)傳至GPU或用于CPU計(jì)算的內(nèi)存;
[0018]所述GPU和CPU響應(yīng)更新后的所述靜態(tài)數(shù)據(jù)和/或動(dòng)態(tài)數(shù)據(jù),做渲染前置計(jì)算,進(jìn)而所述GPU以渲染前置計(jì)算的結(jié)果以及已確定的渲染場(chǎng)景、渲染層、渲染節(jié)點(diǎn)、渲染樹(shù)以及渲染單元進(jìn)行每一幀3D圖像中的各顯示對(duì)象的渲染。
[0019]可選的,在渲染前,還包括:
[0020]將顯示對(duì)象加入渲染場(chǎng)景中,為各顯示對(duì)象準(zhǔn)備靜態(tài)數(shù)據(jù)和初始的動(dòng)態(tài)數(shù)據(jù);
[0021]得到所述顯示對(duì)象的若干渲染單元;
[0022]將所述渲染單元加入到對(duì)應(yīng)的渲染層中,生成渲染節(jié)點(diǎn),確定各渲染層的渲染樹(shù)。
[0023]可選的,得到所述顯示對(duì)象的若干渲染單元后,還包括對(duì)所述渲染單元依據(jù)功能做分類(lèi)的過(guò)程;將同一類(lèi)別的渲染單元合并,再加入到對(duì)應(yīng)的渲染層中。
[0024]可選的,所述顯示對(duì)象包括不需要矩陣運(yùn)算的基礎(chǔ)顯示對(duì)象和需要矩陣運(yùn)算的高級(jí)顯示對(duì)象,所述CPU用以對(duì)所述高級(jí)顯示對(duì)象對(duì)應(yīng)的靜態(tài)數(shù)據(jù)和/或動(dòng)態(tài)數(shù)據(jù)進(jìn)行渲染前置計(jì)算;所述GPU用以對(duì)所述基礎(chǔ)顯示對(duì)象對(duì)應(yīng)的靜態(tài)數(shù)據(jù)和/或動(dòng)態(tài)數(shù)據(jù)進(jìn)行渲染前置計(jì)算。
[0025]可選的,在進(jìn)行渲染計(jì)算和渲染時(shí),針對(duì)每一幀3D圖像:
[0026]若其中的靜態(tài)數(shù)據(jù)和/或動(dòng)態(tài)數(shù)據(jù)已經(jīng)完成過(guò)渲染前置計(jì)算,則不再對(duì)其進(jìn)行再一次的渲染前置計(jì)算,采用已計(jì)算出的結(jié)果進(jìn)行渲染。
[0027]可選的,對(duì)其中的靜態(tài)數(shù)據(jù)和/或動(dòng)態(tài)數(shù)據(jù)完成渲染前置計(jì)算后,還將此計(jì)算的結(jié)果存放,并將其標(biāo)注為無(wú)需再次更新操作的狀態(tài);否則將其標(biāo)注為需要再次更新操作狀態(tài),然后在該幀3D圖像渲染的后續(xù)處理中依據(jù)相應(yīng)的狀態(tài)標(biāo)注判斷是否進(jìn)行渲染前置計(jì)笪并ο
[0028]本發(fā)明認(rèn)為,對(duì)于實(shí)現(xiàn)高效的程序系統(tǒng)有以下普適原則:
[0029]i)運(yùn)行時(shí)程序代碼對(duì)象能不創(chuàng)建就不創(chuàng)建。
[0030]ii)運(yùn)行時(shí)程序代碼邏輯能不執(zhí)行邏輯計(jì)算就不執(zhí)行。
[0031]iii)運(yùn)行時(shí)程序代碼對(duì)象能不銷(xiāo)毀就不銷(xiāo)毀。
[0032]通過(guò)這個(gè)普適原則,實(shí)現(xiàn)最大限度的重復(fù)使用現(xiàn)有結(jié)果,以便減少冗余操作。要達(dá)到這個(gè)目的就需要引擎程序系統(tǒng)中有嚴(yán)格的運(yùn)行時(shí)資源管理機(jī)制。在3D游戲渲染引擎系統(tǒng)中,運(yùn)行時(shí)資源這個(gè)概念包含了邏輯對(duì)象、數(shù)據(jù)對(duì)象、加載到內(nèi)存中的外部資源、上傳到顯卡中的顯存資源,以及被執(zhí)行的邏輯計(jì)算等。
[0033]管理好運(yùn)行時(shí)資源,才能實(shí)現(xiàn)上述三原則。因此實(shí)現(xiàn)3D游戲渲染引擎,系統(tǒng)結(jié)構(gòu)和運(yùn)行時(shí)機(jī)制要優(yōu)先考慮資源的良好管控。有了這個(gè)基礎(chǔ),實(shí)現(xiàn)具體的游戲功能就方便很多。
[0034]基于該認(rèn)識(shí),本發(fā)明至少做了以下改進(jìn):
[0035]通過(guò)資源管理模塊對(duì)內(nèi)存、顯存以及外部加載的原始靜態(tài)資源的統(tǒng)一管理,在引擎中整合完善的運(yùn)行時(shí)資源管控機(jī)制,讓上層開(kāi)發(fā)者不用再處理引擎中的這類(lèi)問(wèn)題;
[0036]進(jìn)一步在本發(fā)明可選的方案中,還通過(guò)對(duì)渲染流程的優(yōu)化,盡量減少了運(yùn)行時(shí)不必要的渲染操作,以提高資源的利用率。
【附圖說(shuō)明】
[0037]圖1和圖2是本發(fā)明一實(shí)施例中資源管理的流程示意圖;
[0038]圖3是本發(fā)明一可選實(shí)施例中渲染流程基本邏輯的示意圖;
[0039]圖4是本發(fā)明一可選實(shí)施例中將所述渲染單元分類(lèi)并加入到對(duì)應(yīng)的渲染層的示意圖;
[0040]圖5是本發(fā)明一實(shí)施例中渲染中流程的示意圖;
[0041]圖6是本發(fā)明一實(shí)施例中顯示對(duì)象的示意圖;
當(dāng)前第1頁(yè)1 2 3 4 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1