转载请注明出处。写这种原创真的很费心血。
上一篇文章,我已经写了,怎么去查Unity导出到Android真机上的GPU使用情况,包括CPU使用情况(比如大核用了多少,小核心用了多少,类似于windows的资源管理器的CPU使用显示)。
这一篇,让我们更近一步,去分析图形API的调用情况。注意如下两个分析条件:
1,依旧是分析基于ARM CPU和Mali系列GPU的。
2,分析以openGL ES 为图形接口API的。 (下一篇再分析Vulkan。因为Vulkan有时候是无法正常获取Debug数据的!)
1,Unity的准备工作:
为了方便测试,我们先在unity端准备一下场景资源:
1,一个URP场景。里面只有1个物体
2,这个物体只有1个shader,带2张贴图。
因为这一篇主要是OpenGL,所以,确保一下导出的图形接口是opengl 的:
Unity准备打测试包(注意,测试包要在build settings里面勾选这三项)
此时,adb正常,在unity里已经能显示设备了,然后,你导出了包,并在手机上可以显示。
二,Graphics Analyzer的准备工作:
上一篇文章,已经安装好了Graphics Analyzer。所以我们打开它,
打开后界面是这样的:
开始配置Graphics Analyzer的ADB。点击Graphics Analyzer的【Edit】-【Preference】,然后配置adb的位置:
ADB配置好之后,开始配置链接【Device manager】:
在弹出的界面中,确认你的手机设备,然后选中你导出到Android的测试包:
在捕获之前,我们能看到,默认API,是勾选了Open GL ES和 Vulkan的。
三、使用Graphics Analyzer分析数据
选中Unity刚刚导出的那个APP。点击【start capture】捕获,之后手机会自动启动app。
这样APP就开始跑了。那怎么暂停到想测试的帧上呢?点击工具栏上的暂停按钮,如图:
暂停之后是这样的,后面的快捷功能就亮了,比如那个小相机图标:
我们再看一下界面的总览:
捕获当前帧(一般是最新的这一帧)数据,用于分析:
我们点一下菜单栏那个相机图标,就是捕获:
捕获后,会在左侧的Trace Outline区域里,显示。注意看,名称很多都是以gl开头的,因为我们本次测试发的是,OpenGL ES3的包,如果是图形API是基于Vulkan的,那么会以vk开头:
然后我们逐个点一下,你会发现,有点像Unity的 Frame Debug。
好,我们继续看shader:
不行了单位太热了,32度了,先不写了,后续继续。