欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

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

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

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