Android中用OpenGL ES Tracer分析绘制过程
来源:互联网 发布:gpu与matlab混合编程 编辑:程序博客网 时间:2024/05/17 02:46
Tracer for OpenGL ES(http://developer.android.com/tools/help/gltracer.html)是Android SDK中新增加的开发工具,可逐帧(准确得说是逐函数)记录app用OpenGL ES的绘制过程。它提供了每个OpenGL函数调用的消耗时间,所以很多时候用来作performance分析。但因为其强大的记录功能,在分析渲染出错的问题时(尤其是没有源代码的情况下),它也可算是一大神器。缺点有二:一是只支持Android 4.1及以上的设备,二是采集数据时app运行会变得很慢(这可能会影响app的行为)。
简要使用步骤:
1. 先连接设备,然后打开Device Monitor(在android-sdk/tools/monitor) 或Eclipse(装了ADT的话),接着Window-> Open Perspective -> Other -> Tracer for OpenGL ES。
2. 点击,填写要分析的app信息,这里面的Package名和Activity名都可以通过解压Apk文件从AndroidManifest.xml中得到,或是通过打开该app后用
$ adb shell dumpsys activity | grep app名
得到。然后能打勾的全打上勾,点Trace开始。例子:
3. 觉得差不多了点"Stop Tracing"结束,Trace log文件就会生成在预定的目录下。
4. 点击,选中生成的Trace log文件,然后就可以分析了。如:
左上角的滑动条是帧号,通过它来调节要看哪一帧的绘制过程。
左下角为这一帧中运行过的绘制函数,其中的画图函数会标蓝显示。点击其中的某个函数,其它的窗口就会相应显示那个函数执行后的效果。举例来说,如点图中的glDrawArrays函数后,中间的GL状态内容也相应改变,右上角的预览也变成了这一函数执行后的效果。其顶点坐标和纹理坐标都可通过点击前面的glVertexAttribPointerData,然后从Details窗口获得。而当前用的texture, shader和buffer等信息都可以从中间的GL状态窗口中获得。从图中可以看出,这个函数是用来绘制背景的,因为后面的Draw函数还没有执行到,所以屏幕中间的其它元素都还没有被绘制出来。
中间窗口即为OpenGL的状态了。OpenGL像一个状态机,当前绘制效果受到当前GL状态的影响,而当前GL状态可能在很久之前就设定好了。有了这个信息就大大方便了我们的分析。
右上角窗口为当前选定函数执行后的绘制效果。
右下角窗口为这一帧所有函数执行完后的绘制效果,也就是这一帧绘制完后的效果。
- Android中用OpenGL ES Tracer分析绘制过程
- Android中用OpenGL ES Tracer分析绘制过程
- (转)Android中用OpenGL ES Tracer分析绘制过程
- Android中用OpenGL ES Tracer分析绘制过程
- openGL ES Android 三角形绘制
- openGL ES Android 绘制点
- android opengl es 绘制位图字体
- android opengl es绘制三角形+纹理
- Android OpenGL ES 基础:绘制三角形
- Android OpenGL ES 2.0绘制简单三角形
- Android OpenGL ES 3D图形绘制
- Android OpenGL ES 2.0绘图:绘制纹理
- Android OpenGL ES 2.0绘图:绘制纹理
- NativeActivity 使用那个 Tracer for OpenGL ES
- OpenGL ES 绘制多边形
- OpenGL ES 绘制圆环
- Android OpenGL ES 分析与实践
- Android OpenGL ES 分析与实践
- linkinFrame--web应用举例--准备工作
- Activity启动模式详解
- [DevExpress]TreeListLookUpEdit带checkbox之经典运用
- ASCII 码表
- java程序实现短信发送(可调用免费短信接口)
- Android中用OpenGL ES Tracer分析绘制过程
- 相机的存储路径
- service中调用dialog
- vector转换成数组
- 在Xml中加注释的方法
- Linux 网卡驱动学习(五)(收发包具体过程)
- Android中View的性命周期
- Android性能优化典范
- jQuery常用方法归纳总结