Adreno Profiler 提取手機游戲資源


https://blog.csdn.net/lly20000/article/details/79774755

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-server

adb start-server

 

adb 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其他的資料
1、Adreno 手機游戲 & 圖形優化論壇:http://qualcomm.csdn.net/module/zone/qualcomm/ziyuan_detail?id=73
2、Adreno 的參考手冊:http://qualcomm.csdn.net/module/zone/qualcomm/ziyuan
3、Adreno 應用示例:https://developer.qualcomm.com/mobile-development/maximize-hardware/mobile-gaming-graphics-optimization-adreno
4、Adreno profiler 的使用: http://www.kuqin.com/shuoit/20150517/346102.html
5、Andreno GPU Profiler : https://developer.qualcomm.com/software/adreno-gpu-profiler

 

最近發現了一個非常好用的工具Adreno Profiler,可以用來分析安卓手機上OpenGL ES繪制過程。這個東西牛的地方在於可以抓取任何可以運行的App,而且使用起來非常方便、沒有額外限制。這個工具本質上是一個OpenGL ES Draw Call Replay;如果你用過PIX或者GPA,就會感到很非常熟悉了。下圖是貴易的魔天記,掛起來毫無壓力233

adreno_mtj

由於這個工具是高通提供的,所以只能運行在高通芯片的安卓機上。為什么要強調這一點呢?其實其他廠商也有類似工具,但是從使用限制、方便程度上來說差太多了:

  • 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,直至刷出對應的設備和應用:

adreno_connect

雙擊連接之后,點擊Scrubber GL彈出抓取界面,然后點擊Capture Frame等待即可

adreno_connect2

這樣其實就完成了抓取工作,是不是感覺so easy! 下面將從例子出發,介紹具體的使用。

小技巧:抓取完成之后,可以點擊上方的Save將幀數據保存成apr文件,這樣可以之后Open,省的每次分析都需要連接手機、打開游戲。

基礎使用

這個工具使用非常簡單,核心是左下角的Render Calls。它其實是抓取了一幀中所有GL部分的調用及相關數據,然后按照繪制命令組織。當選中不同的Render Call時,工具會顯示從一開始到這一個命令的繪制結果,方便看到每一個中間過程。此外,在API Calls中,還可以看到每一個Render Call之前的其他命令,包括各種對GL狀態機的修改:

adreno_api_calls

從圖中可以看到,在這個繪制動作前,對模板狀態進行了設置,然后傳了一些Uniform,並修改了頂點屬性~更方便的是,具體的頂點數據什么也能直接看到!

adreno_vertex_data

如何查看、導出資源

就紋理來說,在右邊可以看到所有顯存里的紋理資源,點開可以看到具體的紋理參數和縮略圖。在上面有一個小的按鈕,可以將所有紋理都保存成一個個文件:

adreno_textures

就Shader來說,同樣也是可以看到所有Program,工具還會貼心的標出所有利用了該Shader的Render Call,下面可以看到反匯編出來的指令:

adreno_shaders

就模型來說,選中一個Render Call然后Save Vertex Data就可以導出obj,但是生成的文件還需要稍微修改下才能導入,具體打開看看就懂了~

adreno_obj

我曾經把馴龍高手的地形導出之后放到Unity,毫無壓力-。-

adreno_dragons

進階使用

游戲性能優化

之前zhiwei寫過Cocos2d-x+Lua游戲的優化總結,下面我從圖形性能為例,來介紹需要注意的幾個點~

首先需要看一下每一個Render Call干了什么,是否有意義。根據不同游戲類型,對Draw Call個數應該有個大概掌握。這個當然是越少越好啦~

    • 是否有無效Render Call,我曾經見過一個全屏繪制“無效果”,也就是屏幕內容在繪制前后結果完全一致,不知道到底干啥了...
    • 是否有繪制到屏幕外的Render Call,也就是模型在屏幕外的情況;這個其實應該是引擎自動優化掉相機范圍外的物體,不過有的引擎不具有這個能力_(:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM