step.1 准备工具

1.adb连接工具(我用的cofface adb )

【cofface】adb基于最新安卓源码编译修改,兼容其它助手,增加参数,支持识别所有机型

工具详情:http://blog.cofface.com/archives/569.html

下载地址:http://pan.baidu.com/s/1qX3XQDA

2.Adreno Profiler 基于硬件层面查看内存贴图

所有有些团队为了避免别人提取所以对资源进行了加密,最近又发现了一个神器基于硬件层面查看内存贴图,这样就直接无视对方加密了

工具详情:https://developer.qualcomm.com/software/adreno-gpu-profiler

下载地址:https://developer.qualcomm.com/software/adreno-gpu-sdk/tools

3.TexturePacket和还原工具

Anti_TexturePacker 或者 unpack_plist.py

step.2 链接手机

利用adb来连接手机有两种方式: 1, wifi, 2, usb.

1. 通过wifi, 利用adb来连接手机。在pc的cmd中输入命令: adb connect 192.168.1.100 如果电脑连不上安卓手机可以试试这个【cofface】adb基于最新安卓源码编译修改,兼容其它助手,增加参数,支持识别所有机型

ps:使用adb devices命令,老是报error:device offline的错误。

刚开始报error:devices not found

重新安装adb 驱动。

解决方法:

adb kill-serveradb start-serveradb remount

再使用adb devices和adb shell就可以使用android adb功能了。

step.3 查看显存贴图

Adreno Profiler分析任意安卓游戏特效抓取资源,可以用来分析安卓手机上OpenGL ES绘制过程。这个东西牛的地方在于可以抓取任何可以运行的App,而且使用起来非常方便、没有额外限制。这个工具本质上是一个OpenGL ES Draw Call Replay;如果你用过PIX或者GPA,就会感到很非常熟悉了。

由于这个工具是高通提供的,所以只能运行在高通芯片的安卓机上。为什么要强调这一点呢?其实其他厂商也有类似工具,但是从使用限制、方便程度上来说差太多了: iOS可以用XCode自带的Frame Capture,但是这货用起来很不顺手,而且没法抓取第三方应用。其他安卓厂商也有类似的工具,例如Mali Graphics Debugger,但是使用起来比较麻烦,譬如需要越狱、上传so到系统目录之类的。下面将具体介绍其使用

最近发现了一个非常好用的工具Adreno Profiler,可以用来分析安卓手机上OpenGL ES绘制过程。这个东西牛的地方在于可以抓取任何可以运行的App,而且使用起来非常方便、没有额外限制。这个工具本质上是一个OpenGL ES Draw Call Replay;如果你用过PIX或者GPA,就会感到很非常熟悉了。下图是贵易的魔天记,挂起来毫无压力233

由于这个工具是高通提供的,所以只能运行在高通芯片的安卓机上。为什么要强调这一点呢?其实其他厂商也有类似工具,但是从使用限制、方便程度上来说差太多了:

iOS可以用XCode自带的Frame Capture,但是这货用起来很不顺手,而且没法抓取第三方应用。
其他安卓厂商也有类似的工具,例如Mali Graphics Debugger,但是使用起来比较麻烦,譬如需要越狱、上传so到系统目录之类的。
下面将具体介绍其使用,然后用两个例子来讲解,一个是抓取分析聚爆Implosion的特效绘制,另一个是用来做cocos2d-x图形性能优化。

ps. 我习惯说Draw Call(DC),工具里是Render Call,下文会混用...

环境配置
软件配置
下载Adreno Profiler并安装,需要注意以下几点:

Adreno SDK不是必须的,可以无视;
虽然Adreno Profiler提供了跨平台版本,但这货貌似是c#的,我尝试在OSX下用Mono跑但是折腾不出来,所以最好还是Windows;
需要将adb添加到系统路径,可以直接下载一个Android SDK,但是我国国情导致你不一定能很方便的下载下来;还有一种取巧的办法是所谓的xx手机助手、豌豆荚等工具目录下一般都会自带,指向adb.exe所在目录即可。
硬件配置
需要一个有高通芯片的手机,我这里强烈推荐G家亲儿子Nexus系列!如果手头没有的话,可以去淘宝买个Nexus 4,虽然是几年前的机器、不过一点都不卡,而且一千块钱都不到。

注意目前Android 5.1上可能出现连接不稳定的情况,见官方论坛,我这边测试5.0倒是一直能用~所以如果遇到这个问题,建议降低系统版本再说。

再注意需要打开手机的开发者模式,并把电脑设为信任,偷懒的方法是用豌豆荚连一次,跟着指示做就行,驱动都自己装好了。

基础教程
如何抓取一帧
首先手机上打开游戏,运行到需要抓取的界面。然后在电脑打开Adreno Profiler,点左上角的Connect。这里有两种连接方式:手机直接插到电脑上,或者在同一个局域网内使用IP连接。准备好了之后点击Refresh,直至刷出对应的设备和应用:

双击连接之后,点击Scrubber GL弹出抓取界面,然后点击Capture Frame等待即可

这样其实就完成了抓取工作,是不是感觉so easy! 下面将从例子出发,介绍具体的使用。

小技巧:抓取完成之后,可以点击上方的Save将帧数据保存成apr文件,这样可以之后Open,省的每次分析都需要连接手机、打开游戏。

基础使用
这个工具使用非常简单,核心是左下角的Render Calls。它其实是抓取了一帧中所有GL部分的调用及相关数据,然后按照绘制命令组织。当选中不同的Render Call时,工具会显示从一开始到这一个命令的绘制结果,方便看到每一个中间过程。此外,在API Calls中,还可以看到每一个Render Call之前的其他命令,包括各种对GL状态机的修改:

从图中可以看到,在这个绘制动作前,对模板状态进行了设置,然后传了一些Uniform,并修改了顶点属性~更方便的是,具体的顶点数据什么也能直接看到!

如何查看、导出资源
就纹理来说,在右边可以看到所有显存里的纹理资源,点开可以看到具体的纹理参数和缩略图。在上面有一个小的按钮,可以将所有纹理都保存成一个个文件:

就Shader来说,同样也是可以看到所有Program,工具还会贴心的标出所有利用了该Shader的Render Call,下面可以看到反汇编出来的指令:

就模型来说,选中一个Render Call然后Save Vertex Data就可以导出obj,但是生成的文件还需要稍微修改下才能导入,具体打开看看就懂了~

我曾经把驯龙高手的地形导出之后放到Unity,毫无压力-。-

进阶使用
游戏性能优化
之前zhiwei写过Cocos2d-x+Lua游戏的优化总结,下面我从图形性能为例,来介绍需要注意的几个点~

首先需要看一下每一个Render Call干了什么,是否有意义。根据不同游戏类型,对Draw Call个数应该有个大概掌握。这个当然是越少越好啦~

是否有无效Render Call,我曾经见过一个全屏绘制“无效果”,也就是屏幕内容在绘制前后结果完全一致,不知道到底干啥了...
是否有绘制到屏幕外的Render Call,也就是模型在屏幕外的情况;这个其实应该是引擎自动优化掉相机范围外的物体,不过有的引擎不具有这个能力_(:?ͦang;)_
是否有被完全挡住的Render Call,这时候需要完全干掉,不然也是会造成性能损失的;话说这个其实也应该引擎自动优化Occlusion来着(╯‵□′)╯︵┻━┻
是否有能够合并的Draw Call,像Unity里有Dynamic/Static Batching技术。
是否有负担比较重的API调用,譬如每帧都修改顶点数据,是否能避免或绕开。
然后需要看一下显存中的纹理数量和大小,这个肯定也是越小越好~

能用压缩纹理的地方就用压缩纹理,RGB444能忍的地方就不要用RGB888;
少用透明贴图,可以节约掉一个A;
可以用NPOT;
无用的纹理尽量不要放太多显存。
需要注意的是显存中纹理占用和包里的纹理占用不同,因为所有纹理资源在进入显存之前会进行解压操作,这就是为什么建议使用压缩纹理。

此外,Adreno Profiler还提供了Graph工具,可以看到应用的许多性能信息,用来对比不同游戏场景下负载:

工具本身也提供了一些建议供参考:

聚爆特效分析
这个其实源自我之前在知乎上的一个回答:这款游戏中主角被遮挡部分变成半透明的效果是如何实现的?。

在介绍如何绘制被遮挡部分的特效,用了一个小技巧:查看GL Context状态机,这里就可以看到ztest被改成了GREATER,也就是绘制完场景之后直接绘制被挡住的部分~

当然,还可以点击上方的Depth切换出zbuffer查看

解释刀光特效的时候,主要靠经验积累,大概看下绘制的中间结果就猜出来了-。- 本质还是一个很简单的特效。亮点在于绘制第二道刀光时,先绘制了整个场景,然后对其进行了一定的扭曲~

Adreno Profiler提供了一些很方便的可视化功能,譬如选中一个纹理或者Shader,可以标记出所有使用该资源的Render Call;选中Render Call的时候会在屏幕上标记其绘制效果~

其他

http://www.xuanyusong.com/archives/3618
http://www.kuqin.com/shuoit/20150517/346102.html

转载于:https://www.cnblogs.com/tangyongle/p/9553102.html

提取手机游戏资源 特效 显存分析工具 无视任何加密相关推荐

  1. 手机游戏资源 特效 显存分析工具

    http://blog.sina.com.cn/s/blog_73bed4520102w4tt.html step.1 准备工具 1.adb连接工具(我用的cofface adb  ) [coffac ...

  2. Adreno Profiler 提取手机游戏资源

    step.1 准备工具 1.adb连接工具(我用的cofface adb  ) [cofface]adb基于最新安卓源码编译修改,兼容其它助手,增加参数,支持识别所有机型 工具详情:http://bl ...

  3. 深度学习中GPU和显存分析

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自:机器学习AI算法工程 深度学习最吃机器,耗资源,在本文,我将 ...

  4. 科普帖:深度学习中GPU和显存分析

    深度学习最吃机器,耗资源,在本文,我将来科普一下在深度学习中: 何为"资源" 不同操作都耗费什么资源 如何充分的利用有限的资源 如何合理选择显卡 并纠正几个误区: 显存和GPU等价 ...

  5. GPU显存 - 深度学习中 GPU 和显存分析

    深度学习中 GPU 和显存分析 原文作者陈云. 本文原载于知乎专栏--人工智障的深度瞎学之路 深度学习最吃机器,耗资源,在本文,我将来科普一下在深度学习中: 何为"资源" 不同操作 ...

  6. 显卡显存故障检测工具_【硬件资讯】1660super实锤!更换DDR6显存!带宽超1660ti!...

    新闻1:英伟达将发布GTX 1660 SUPER新卡,狙击AMD Navi 14/12 本以为在RTX 2060 SUPER.RTX 2070 SUPER和RTX 2080 SUPER发布之后英伟达这 ...

  7. 显卡显存故障检测工具_为RTX30系显卡做准备,骨伽GEX750金牌全模组电源装机体验...

    装机很简单,只要确定了硬件配置下单购买即可,剩下就是等硬件全部到货后直接动手组装即可,第一次装机可能会遇到各种问题属于正常情况,之后在装机上则会顺利上很多.装机前的难点在于确定最终的硬件配置,毕竟品牌 ...

  8. 提取Unity游戏资源和脚本

    UnityStudio UnityStudio可以直接在自己的软件上查看图片.shader.文本.还能直接播放音频.甚至还能看场景Hierarchy视图的树状结构.强烈推荐用UnityStudio. ...

  9. Java-Jvm-06-内存分析工具 jmap,jhat及dump分析

    1. 简介 jmap -heap [pid] 查看整个JVM内存状态 查看进程号为pid的Java程序的整个jvm内存状态 要注意的是在使用CMS GC 情况下,jmap -heap的执行有可能会导致 ...

最新文章

  1. 计算机网络谢希仁第七版课后答案第三章 数据链路层
  2. git用ssh方式下载和提交代码
  3. Activity和Task
  4. cmd非运行完再保存,结果显示保存同时进行
  5. IIS基础:返回404错误页面的合理设置方式
  6. Oracle学习(十五)PLSQL安装
  7. 皇牌空战无限服务器,《皇牌空战:无限》正式停服 一个搏击长空的时代终结[多图]...
  8. 程序员修神之路--做好分库分表其实很难之二
  9. scala rest_使用路标的Scala和Java的Twitter REST API
  10. ThreadLocal剧集(一)
  11. Hibernate学习笔记!
  12. POJ 3481 treap
  13. 《推荐系统笔记(十五)》流行度以及基于流行度的推荐
  14. Atitit. Dwr 抛出异常error解决方案
  15. 软件项目管理实用教程(人民邮电出版)第一章课后习题
  16. 您的 App 包含 NSUserTrackingUsageDescription,这表示您将会请求追踪用户。要在
  17. 来自一个IT民工的转型
  18. win10-gvim安装vim-airline后状态栏乱码,而且箭头显示不出来
  19. java版飞机大战代码
  20. VK1623,DICE(邦定COB)/COG(绑定玻璃用)段码LCD液晶显示驱动芯片,支持最大48EGx8COM

热门文章

  1. k8s pod镜像拉取策略:Always、IfNotPresent、Never
  2. idea2018.3.5集成scala开发环境
  3. 【代码】ReentrantLock还可以指定为公平锁
  4. Hadoop SSH免密登录公钥生成并实现不同主机间的免密登录
  5. mysql数据库更新表_Mysql数据库(四)表记录的更新操作
  6. python 数学建模、时间戳_python-在matplotlib中绘制Unix时间戳
  7. python爬虫搜特定内容的论文_Python 爬虫爬取指定博客的所有文章
  8. Python基本数据类型 set()
  9. Java传值与传引用
  10. myeclipse中,项目上有个叉报错,文件没有错误