通常U3D游戏最关注的是内存和fps,其中内存影响crash率,fps影响游戏的流畅性。本文主要关注fps。影响fps主要是以下几个因素。
本文主要介绍在确定渲染耗时是fps瓶颈的前提下,卡顿帧分析参数的获取。
Adreno profiler的应用
Adreno profiler是高通开发的专业分析高通芯片gpu的工具,是美术分析最方便的工具。简单介绍一下adreno profiler的使用方法。
安装后打开应用,点击connect
通过手机adb连接到pc,也可以通过ip连(同profiler一样也需要在局域网环境下才可以连接),连接成功后会出现下图所示。此步失败率较大,主要原因有:adb不通,手机芯片关闭opengl调试。解决方法会在下次分析中介绍。
然后打开测试应用,点击refresh,出现下图所示,继续点击connect即可。
连接成功后进入主界面,点击ScrubberGL,然后在需要分析的地方点击Capture Frame即可手动截帧,截帧时数据量较大,需要等待时间较长。
左下角是opengl具体渲染的过程中调用的api函数,按顺序点击即可看到渲染顺序,右上角是纹理浏览器,可以看到该帧有那些texture加载进了内存,正下方是一些综合参数,后续会介绍到,右下角是shader查看器,可以更改某个shader的参数,用得较少。
美术参数对应
同屏面数
点击Frame status->Geometry,其中的Total Primitives即是同屏面数。
角色面数
点击左下角的Render calls,选择渲染角色那一个调用,查看element data->GL_TRIANGLES
Drawcall次数
点击Frame status->RenderCalls,其中的glDraw *Calls即是。
API Calls
点击Framestatus->General,其中的API calls即是。
贴图总量
点击Framestatus->Miscellaneous,其中的Total Texture Usage即是。
Overdraw
点击Framestatus->Overdraw,其中的Average Overdraw即是。
查看绘制顺序是否可优化
点击左下角的RenderCalls,可以看到本帧的具体渲染过程,可以点击查看,确定绘制是否合理,例如是否频繁的clear,可以和unity的drawcalltools相结合查看相同材质的是否已经合理合并等
查看是否有冗余纹理加载
点击右上角Textures->可以查看具体的纹理图,保存后可以查看纹理渲染的哪一部份,确定是否有冗余的纹理加载进内存。通常纹理图经过压缩后多为ETC格式。通常texture压缩会在U3D导入设置里面选择advanced,选择format Automatic Compressed,并取消Generate Mip Maps。
硬核招聘广告
Call For 真正热爱游戏,热爱技术的Hard core 开发者,图形渲染程序,TA,引擎程序,社招或者实习生都欢迎。
简历请发送至shaomluo@163.com