使用Intel GPA在PC上分析Android遊戲的渲染流程

在Android真機上進行GPU抓幀調試無疑很麻煩,是否能夠用PC上的調試工具,對Android模擬器中運行的遊戲進行抓幀呢?

答案是可以的,在一番搜索之後,發現主要有2篇資料提到了這個辦法:

康斯特:用GPA對android應用繪製分析>,<以端游角度來看,應該如何去分析手游的渲染流程?>,它們分別用Intel GPA和Nvidia NSight作為抓幀工具。

但是經過我實踐,它們的辦法都不可行,主要問題是文章過於陳舊,GPA和NSight都已經過好幾個版本變動了,而我沒有找到針對目前版本可行的資料。沒辦法了自己研究吧。

經過摸索,最後成功用Intel GPA對Android模擬器Nox(夜神模擬器)進行抓幀,Nvidia NSight則沒有成功,下面是用GPA抓幀成功後的結果展示(王者榮耀):

可以發現這一幀有大約240個DrawCall,還可以看到亞瑟這個模型有3000面左右,順便還可以趴一下資源:

接下來將詳細步驟列出如下:

環境:Win10,Intel GPA 2019R1,Nox(夜神模擬器)6.2.8.3

1.安裝Intel GPA和Nox(夜神模擬器)。

Intel GPA下載鏈接如下:<Free Download | Intel? Graphics Performance Analyzers>

Nox下載鏈接如下:<夜神安卓模擬器-安卓模擬器電腦版下載-官網>

2.先運行Nox,在設置中將顯卡渲染模式改成DirectX並保存。

3.將Nox關閉,接下來要在Graphics Monitor中運行Nox。

打開GraphicsMonitor,在下方選擇Nox程序的位置,然後打開設置面板,將Auto-detect launched applications切換為On。然後點擊右下按鈕運行Nox。

:Auto-detect lanucned applications每次打開都默認都為Off,因此每次一定要手動切換為On,否則GPA無法識別應用。

4.用Monitor運行Nox後應該可以在左上角看到調試窗口,按Ctrl+F1後可以切換面板看到更多的信息。

5.按照開頭列出的兩篇文章,它們都是在這個面板使用Ctrl+Shift+C抓幀的,但是我抓幀後是沒有反應的,這也是為什麼我說它們的方法不可行,至於原因其實我也不清楚,我覺得應該是版本升級後的問題,如果有用快捷鍵成功的小夥伴可以評論區告知。

好在GPA可以用另外一種方法抓幀,打開System Analyzer,點擊Connect後,選擇NoxVMHandler.exe

6.之後就進入到了分析界面,接著在你想要抓幀的地方點擊照相的按鈕。

7.抓取完成後,最後打開Graphics Frame Analyzer,你應該能在主界面看到剛剛抓幀的信息,我這裡在王者榮耀遊戲內抓了一幀:

8.雙擊該截圖後,你就進入到開頭的分析界面了,完。


推薦閱讀:

Unity UI優化小結
基於Compute Shader的生命遊戲
(程序向)Unity3D GPU繪製管線(1)
(2D)小狐大冒險01-角色移動!
Unity腳本運行時更新帶來了什麼?

TAG:Unity(遊戲引擎) | Android | 計算機圖形學 |