安卓游戏性能分析工具使用汇总

本文地址:https://blog.csdn.net/t163361/article/details/82424553
最近一段时间在研究市面上顶尖游戏的渲染效果如何实现。把最流行的四款工具都用了一个遍。遇到很多坑,具体的参考文章以及细节补遗在这里汇总一下。
市面上的真机性能分析工具主要有如下几种
1.AdrenoProfiler:高通出品,经典版本,模型和纹理都可以批量导出,但是使用过程中,经常遇到读不到手机的情况,可以多等一会或者重开程序试试。需要高通手机。不需要root。
2.Snadragon Profile:高通出品,新开发的版本,模型和纹理不能批量导,但是使用上比老款好用多了,基本上手机连上就可以用了。需要高通手机。不需要root。
3.Intel GPA:英特尔出品,这个是和机型无关的,这款软件最溜的地方在于可以在pc上截模拟器的数据。
4.ARM MGD:ARM出品,这个需要Mali的机器,自己的应用,可以修改AndroidManifest文件添加一个标记。其他人的应用,就只是使用Root的方式了。

具体分析:

AdrenoProfiler
相关教程:
Adreno Profiler分析任意安卓游戏特效+抓取资源
使用细节:
a.比较吃电脑的环境,如果环境配置的不好的话,怎么也认不出来手机。
b.支持wifi模式。

Snadragon Profile
相关教程:
Snapdragon Profiler快速入门指南
使用细节:
a.因为没有使用root模式,所以一些游戏应该是做了底层反调试的,一调试就闪退比如(决战!平安京),这样的游戏如何分析呢,就用到下面的两款软件。
b.使用这个软件导出的纹理经常会出现alpha丢失的情况。但是软件里面是可以看的,我们这美术就想了一个比较溜的方法,打开alpha后,使用截图工具,然后在ps里面把截的alpha图合并到纹理的alpha图层里。

Intel GPA
相关教程:
使用 Intel GPA 与 分析3D程序和抓取模型
用GPA对android应用绘制分析
使用英特尔® INDE 图形性能分析器 (GPA) 分析和优化 Windows* 游戏应用
使用细节:
a.这个工具支持真机,也支持模拟器。我使用的就是模拟器,目前公认比较好用的模拟器是网易的那款,一定要选一个好用的模拟器,不然出不来。
b.最新的2017,2018版本我在win7上使用的时候要么挂不上,要么报一个函数丢失的问题。最后使用的2014版本,成功截出来数据。数据分析的话,新版本支持老版本的数据。
c.截出来的模型是扁的,而且UV和模型是只能分别导出的,只把模型导入3dmax里面是没办法使用的。
d.模拟器只能使用DirectX模式渲染才有效。而且虽然shader可以截出来,但都是汇编级别的,满屏的mov,大神可以看看,我等小白就绕路吧。
e.真机貌似也可以,但我没做测试。
c和d遇到的问题可以用下面这款软件解决。

ARM MGD
相关教程:
使用Mali Graphics Debugger调优Unity程序(Killer示例)
解决Read-only file system 2018-9-20

mount -o remount,rw /system

解决Read-only file system

摘录Shell执行脚本

#拷贝mgd版OpenGL ES运行时库和mgd后台进程到手机sdcard文件夹
cd /your_computer/path_of_installed_mgd

adb push libGLES_mgd.so /sdcard/
adb push mgddaemon /sdcard/

#准备进入手机进行命令行操作
adb shell
#以下命令在手机中执行
su
#拷贝mgd版OpenGL ES库和mgd后台进程到手机system文件夹并且修改为可执行权限
cd /sdcard/cp mgddaemon /system/bin/mgddaemon
chmod 777 /system/bin/mgddaemon
cp libGLES_mgd.so /system/lib/egl/libGLES_mgd.so
chmod 777 /system/lib/egl/libGLES_mgd.so

#Android 4.2 和 4.3切换到mgd版OpenGL ES运行时库:改egl.cfg配置方式
cp /system/lib/egl/egl.cfg /system/lib/egl/egl.cfg.bak
echo "0 0 mgd" > /system/lib/egl/egl.cfg

#Android 4.4 and 5.0切换到mgd版OpenGL ES运行时库:文件链接方式
cd /system/lib/egl
ln -s libGLES_mgd.so libGLES.so
ln -s libGLES_mgd.so libEGL_mgd.so
ln -s libGLES_mgd.so libGLESv2_mgd.so
ln -s libGLES_mgd.so libGLESv1_CM_mgd.so

#设置mgddaemon,叫它只调试com.tencent.killer这个进程。这里应填入你自己的进程id
echo "com.tencent.killer" > /system/lib/egl/processlist.cfg

#先退回到电脑,可能不止一次exit
exit

#准备打通调试信息转发通道
adb forward tcp:5002 tcp:5002

#再次进入手机,启动mgd后台进程
adb shell
su
mgddaemon

作者:DonaldW
链接:https://www.jianshu.com/p/35096e796aa3
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

使用细节:
a. adb push这句话执行的是把MGD安装目录下的libGLES_mgd.so和mgddaemon给推到手机的sdcard路径下。
安装目录下这样的文件有很多一定要选对,不然执行不成功。
我的魅蓝3分别使用下面两个路径的文件

安装目录/Mali Graphics Debugger v4.9.2/target/android/arm/rooted/armeabi-v7a/libGLES_mgd.so
安装目录/Mali Graphics Debugger v4.9.2/target/android/arm/mgddaemon

b. cd /sdcard/cp mgddaemon /system/bin/mgddaemon 这句话需要分成两句执行

cd /sdcard/
cp mgddaemon /system/bin/mgddaemon 

c.如果执行第二句,遇到如下报错

cp: /system/bin/mgddaemon: Read-only file system

可以参考上面的第二篇教程,我是使用的教程里的第二种方法解决的。

以上所有的分析都基于win7的环境,mac的没做测试。

其他

导出的shader如何看
a.如果本身shader是用unity写的,比如云裳羽衣一类的,是可以通过参数变换翻译成unityshader的。这块有时间再单独写篇文章。可以参考GLSL转UnityShader
b.如果是其他引擎的比如网易全家桶的,只能看逻辑,自己仿写了(我还没搞定~)。
c.如果是hlsl的汇编级别的,可以看看龚敏敏大神的转译工具,转成GLSL的话,至少还能看。
DXBC2GLSL工具
d.新发现一个dxbc的转换工具
dxbc_reader
不过只是理论上可以,我还没走通。

UV和顶点分离的模型如何处理
a.惯例,只给解决思路,不提供工具。比如MGD可以把顶点,法线,切线,UV都分别导成obj文件。
其实可以把顶点和UV的obj文件使用文本编辑器打开,都是明文的。然后参考obj文件的文件格式,就可以合并成一个UV正常的模型。决战!平安京已经测试通过^^
过程中有啥问题,可以给我发邮件[email protected]

猜你喜欢

转载自blog.csdn.net/t163361/article/details/82424553