在Android真机上进行GPU抓帧调试无疑很麻烦,是否能够用PC上的调试工具,对Android模拟器中运行的游戏进行抓帧呢?

答案是可以的,在一番搜索之后,发现主要有2篇资料提到了这个办法:

康斯特:用GPA对android应用绘制分析>,<以端游角度来看,应该如何去分析手游的渲染流程?>,它们分别用Intel GPA和Nvidia NSight作为抓帧工具。

但是经过我实践,它们的办法都不可行,主要问题是文章过于陈旧,GPA和NSight都已经过好几个版本变动了,而我没有找到针对目前版本可行的资料。没办法了自己研究吧。

经过摸索,最后成功用Intel GPA对Android模拟器Nox(夜神模拟器)进行抓帧,Nvidia NSight则没有成功,下面是用GPA抓帧成功后的结果展示(王者荣耀):

a3d7eba6fe71097f826351b7e02d1535.png

可以发现这一帧有大约240个DrawCall,还可以看到亚瑟这个模型有3000面左右,顺便还可以趴一下资源:

8f60801714fa5b69d512efdf409a3e7d.png

接下来将详细步骤列出如下:

环境: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并保存。

f26057c159ba90b083958c55aef2a9ed.png

3.将Nox关闭,接下来要在Graphics Monitor中运行Nox。

打开GraphicsMonitor,在下方选择Nox程序的位置,然后打开设置面板,将Auto-detect launched applications切换为On。然后点击右下按钮运行Nox。

:Auto-detect lanucned applications每次打开都默认都为Off,因此每次一定要手动切换为On,否则GPA无法识别应用。

76c69a180aab238c6a3b77c647ae509f.png

4.用Monitor运行Nox后应该可以在左上角看到调试窗口,按Ctrl+F1后可以切换面板看到更多的信息。

dcc07a21e7e53a1f0f0a54efdd13e248.png

5.按照开头列出的两篇文章,它们都是在这个面板使用Ctrl+Shift+C抓帧的,但是我抓帧后是没有反应的,这也是为什么我说它们的方法不可行,至于原因其实我也不清楚,我觉得应该是版本升级后的问题,如果有用快捷键成功的小伙伴可以评论区告知。

好在GPA可以用另外一种方法抓帧,打开System Analyzer,点击Connect后,选择NoxVMHandler.exe

f5bb6ca87e0cd9467304670e9d8e4a18.png

6.之后就进入到了分析界面,接着在你想要抓帧的地方点击照相的按钮。

11b7d29a01eafcbf5bf89839bf3328c3.png

7.抓取完成后,最后打开Graphics Frame Analyzer,你应该能在主界面看到刚刚抓帧的信息,我这里在王者荣耀游戏内抓了一帧:

23ac4a20324e86c344b231b837281b8b.png

8.双击该截图后,你就进入到开头的分析界面了,完。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐