刚看到了篇文章,讲解怎么使用GPA和安卓模拟器截帧分析图形渲染的文章《用GPA对android应用绘制分析-GAD腾讯游戏开发者平台》:http://gad.qq.com/article/detail/39208。看后很兴奋,因为我一直想用GPA分析手游。但是原文中有些地方说的不是很详细,自己亲自验证了,把原文中没有说很明白的地方补充上。
优缺点
优点:
1、可以使用最强大的图形分析工具GPA(这是我使用过的最好的图形截帧分析工具,其它图形分析工具,例如Adreno profiler和Snapdragon,稳定性和可用功能都要差很多)。
2、不用找对应芯片的真机,不需要ROOT(模拟器里本身就是有Root权限的)。手机上可用的所有图形分析工具都是由不同的芯片厂商开发的,需要安装了该工具开发商生产的芯片的真机,包括GPA也是。之前为了使用GPA分析游戏,买了三个intel芯片的手机,但都不知道什么原因失败了。这个方案完美解决了这个问题。
3、再不用忍受USB连接线不稳,总是容易断开,重新连接。
缺点:
由于手机游戏用的图形API都是OpenGL ES,而GPA在Windows上只能截取DX 11,所以在GPA里看到的API都是DX 11的。不过图形API的接口都大同小异,完全能对应上。
操作步骤
一、打开夜神模拟器。测试过天天模拟器和夜神模拟器,推荐使用后者,绘制批次更准。修改设置:点击下图中箭头指向的图标
弹出下面的界面
点击“高级设置”选项卡,修改成下面的配置。设置成“极速模式(DirectX)”是因为GPA在Windows上只能截取DirectX的,不支持截取OpenGL(Linux上才支持)。设置成“手机版”是因为如果使用默认的“平板版”的话,分辨率是宽比长的值要大,而我想要分析的游戏是竖屏模式运行的,模拟器里会有多余的操作步骤将画面正确显示出来,并且在GPA里截帧的DC会顺序错乱。480x800的分辨率是因为我想分析的游戏的设计分辨率是这个。
由于我想分析的游戏是竖屏运行,所以点击箭头所指的图标,将屏幕设置成竖屏的。
点击“保存设置”,关闭模拟器。
二、打开GPA,使用GPA启动模拟器。
三、将apk拖进模拟器,点击图标运行。
四、按“Ctrl+Shift+C”截帧。
五、打开“Graphics FrameAnalyzer”进行分析。
其它方案
如果模拟器开启OpenGL渲染模式,能用gDEBugger进行分析,但是会出现很多个Context,而且内容是错乱的。有可能是因为整个模拟器里的所有进程都是用OpenGL ES绘制的,而GPA是对整个模拟器进行截帧,而不是只是游戏。RenderDoc在打开截帧结果时会崩溃。有时间了再研究。
或者以后有时间了自己写工具,通过hook模拟器里的libGLESv2.dll来截帧,自己写工具能获得更多的自由度。