最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

創(chuàng)客互娛:手游太卡如何優(yōu)化?

2023-05-17 17:06 作者:是白兜兜啊  | 我要投稿

游戲怎么這么卡?

一、引擎問題

如果游戲出現(xiàn)卡頓掉幀,多半和引擎優(yōu)化有關(guān)。

引擎性能有幾個關(guān)鍵指標:

1)渲染幀數(shù)

渲染幀數(shù)代表一秒鐘內(nèi)實際渲染的幀數(shù)量,低于設(shè)定的運行幀數(shù)時,說明游戲可能存在引擎性能問題,需要進行排查。大致的排查方向,可以根據(jù)后面的DP數(shù)和多邊形數(shù)來判斷。

2)DP數(shù)

DP數(shù)量決定了渲染流程中CPU的負擔(dān),DP數(shù)為1代表CPU調(diào)用了一次圖形API(在NeoX中一般是OpenGL)進行繪制,調(diào)用API的效率并不算特別高,這導(dǎo)致DP數(shù)高的情況下會使CPU不堪重負,從而使游戲的渲染幀數(shù)下降,所以在游戲制作中需要避免DP數(shù)過高的情況發(fā)生。第一個DP數(shù)代表目前場景視野中總的DP數(shù),modelDP是由于模型產(chǎn)生的DP數(shù),fxdp是由特效產(chǎn)生的DP數(shù),這幾個DP數(shù)可以提供一些大致的優(yōu)化方向。另外在這里并沒有顯示cocosui的DP數(shù),可以使用python腳本cc.Director.getInstance().setDisplayStats來顯示。

3)多邊形數(shù)

多邊形數(shù)量會影響渲染流程中GPU的負擔(dān),3D游戲中的物體由大量三角形面片組成,三角形面片越多,對GPU的壓力越大。和DP數(shù)類似,第一個Prim數(shù)代表目前場景視野中總的多邊形數(shù)量,modelprim則代表模型產(chǎn)生的多邊形數(shù)量。

二、如何優(yōu)化?

1.資源優(yōu)化

1)首先可以考慮整體降低模型的批數(shù)和面數(shù),這種方式可以最直接地降低渲染過程的壓力,以達到優(yōu)化游戲的目的。如果發(fā)現(xiàn)有模型的批次和面數(shù)太高,可以讓美術(shù)把模型從3dsmax里重新導(dǎo)出,以降低面數(shù),或者對于不重要的模型考慮直接刪除。

其實骨骼的運算是最耗時間的,一般來說有n骨頭就做n*4次矩陣運算。這個比較好證明。放一屏幕的角色,然后把骨骼運算一停,只做蒙皮,會發(fā)覺游戲的效率瞬間飛起來。另外,限制骨骼運算的幀頻也能起到一定優(yōu)化作用。

2)另外可以和美術(shù)交流,看看性能有問題的場景里是否存在大量重復(fù)模型的情況,以此來決定是否可以進行精簡來降低DP數(shù)和面數(shù)。

3)項目中如果有大場景,則應(yīng)當(dāng)設(shè)置LOD Mesh,來降低遠景的批數(shù)面數(shù),從而避免遠景采用高精度渲染而導(dǎo)致性能下降。

4)將一些模型合并為一個大模型可以減少渲染批次,但也可能因為無法遮擋剔除而增加渲染面數(shù)。

2.優(yōu)化shader

Shader的編譯需要花費一定的時間,所以這可能會成為渲染性能的瓶頸,使用離線編譯Shader的方式可以減小Shader編譯的時間開銷,從而提高游戲的渲染性能。以NeoX使用的nfx文件來說,在渲染的時候,引擎會先從nfx生成nfxo文件,然后編譯成的pipe文件才是真正的Shader文件。如果預(yù)先得到nfxo或者pipe,就可以加快游戲的渲染速度。

3.為模型設(shè)置不同的level

這一條適用于擁有大場景的游戲。在游戲中一個大物件周圍可能有裝飾性的小物件,和大物件相比,小物件可以允許在更近的距離使用低精度模型甚至不可見,從而達到在總體觀感影響不大的前提下降低渲染模型批次和面數(shù)的效果。

4.最終手段,降低分辨率

降低分辨率是效果最明顯的提高渲染效率的手段,但是負面影響是會很大程度上影響游戲的畫面表現(xiàn)。如果別的手段沒有效果,可以嘗試降低游戲分辨率,比如從1080P降低到900P就可能帶來很大的幀數(shù)提升。不過分辨率不能降得太低,不然幀數(shù)再高玩家也會被鋸齒勸退的。

以上就是本期文章的全部內(nèi)容,希望能夠幫助到大家!


創(chuàng)客互娛:手游太卡如何優(yōu)化?的評論 (共 條)

分享到微博請遵守國家法律
温州市| 福海县| 凤冈县| 崇义县| 金塔县| 西安市| 蒙自县| 河池市| 马边| 墨脱县| 康定县| 噶尔县| 广汉市| 钦州市| 永安市| 昌乐县| 修武县| 乃东县| 三门峡市| 肇源县| 东乡县| 义马市| 成安县| 容城县| 留坝县| 鄢陵县| 北流市| 衢州市| 禹州市| 桂平市| 水富县| 敦化市| 增城市| 永清县| 沂源县| 达拉特旗| 郁南县| 耿马| 泰顺县| 珲春市| 怀仁县|