中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Libgdx畫面FPS性能優化經驗

發布時間:2020-06-27 08:04:40 來源:網絡 閱讀:3261 作者:passover 欄目:開發技術

 最近做的一個游戲類似植物大戰僵尸的風格,做完之后發現FPS一直不高,打無盡模式就相當的卡了,所以就研究了一下到底是什么原因導致的。目前優化完FPS提高了35%,效果還是比較理想的,記錄一下經驗供分享。


【性能定位】

1. 可重現的DEMO

 先寫了個一可以重現問題的demo,另外還準備了一個看起來效果類似卻不出現問題的demo。這樣有比更容易找到問題。

2. 時間消耗在哪

 開啟jvirtualvm進行測試,很明顯內存是一切正常的,但是CPU消耗就異常了。反復對比發現CPU消耗主要就是在“org.lwjgl.opengl.GL11.nglDrawElements”方法上,對比正常的demo,主要時間消耗是在“org.lwjgl.opengl.GL11.glDrawElements”方法上。前者調用了jni,后者就是直接調用,所以性能上有較大差距。但是這個時候還是很難知道到底為什么會這樣,這些代碼也都是被封裝了的,看不到源碼。

3. 定位代碼

 還是要找到大致問題代碼是在哪一塊,其實目前已經知道肯定是繪制的地方出問題了,所以用時間打印的方法很快找到代碼,但是跟到最后就是一個內部的函數調用,外層方法完全看不出來有啥特別的。

4. 替換比較法

 還好準備了兩個有對比性的demo,不停的替換不一樣的地方去看看到底是哪里引起的。這是一個笨辦法,但是通常都很奏效,但是也要點運氣,搞了幾個小時總算發現了端倪。


【性能優化結論】

1. 繪制的性能與次數有關,與繪制最終所占屏幕面積無關。也就是說你把100個圖片覆蓋整個畫面的性能和100個圖片繪制在同一個位置看起來像一個圖片的性能是相當的。

2. 圖片繪制的面積大到一定程度才影響性能。繪制工作肯定還是與面積有關,但是25%屏幕大小以內的圖片對性能影響幾乎沒有,但圖片達到80%屏幕覆蓋時會有大約40%的性能影響,不是成同等比例關系。

3. 圖片用Linear比Nearest要更消耗性能。當需要用到的Linear打包圖片數量達到幾十個的時候就需要注意性能,盡量改用Nearest算法,性能會有10%的提升。

4. 同一個打包合并的圖片連續使用可以大幅度提升性能(注:同一個pack下合并在不同圖片性能和2個pack是一樣差的)。在同一個pack的圖片,注意在addActor的時候連續添加,性能可以極大提升,甚至連續繪制幾百張圖片都不會對fps有太大影響,這也是為什么在libgdx有一個actor測試的時候有許多圖片感覺都不掉fps的原因。這個優化性能提升是在100%以上。

5. 畫面簡單,透明度較多的圖片性能更好。這個會減少繪制的負擔,當然圖片大到一定程度才會感覺到差別,根據畫面復雜度可能會有20%的不同。

6. 大量的GROUP對象影響繪制性能。當GROUP對象使用達到幾十個的時候,哪怕只是包含一個Image的Group都會比簡單的Image繪制要消耗更多時間,幀數下降了10多幀。(2014年1月2日補充)

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新兴县| 新安县| 邵武市| 阆中市| 尉氏县| 司法| 武平县| 盘锦市| 浦东新区| 镇坪县| 德州市| 甘肃省| 仙桃市| 青铜峡市| 新余市| 南郑县| 桦南县| 西乌珠穆沁旗| 重庆市| 奎屯市| 天气| 普兰店市| 玉环县| 汤原县| 运城市| 门头沟区| 扎赉特旗| 伊春市| 石狮市| 即墨市| 嘉定区| 水城县| 鹤山市| 怀来县| 安西县| 团风县| 黑山县| 金堂县| 晋州市| 山东省| 东兰县|