浅谈AndroidGPU过分绘制、GPU呈现模式分析及相关优化

在真机设备下有一个开发者选项,这个你们都知道,咱们最经常使用的就打开'USB调试'功能,方便真机调试。程序员

在这开发者选项中还有个选项,'调试GPU过分绘制'web

 

这里选择第二个选项'显示过分绘制区域'
缓存

能够看到针对该界面 每个控件周边都有一块颜色区域app

 

颜色对应:布局

 

  • 原色:没有过分绘制
  • 蓝色:1 次过分绘制
  • 绿色:2 次过分绘制
  • 粉色:3 次过分绘制
  • 红色:4 次及以上过分绘制

 

 

测试发现大多数手机app都存在过分绘制的问题,这也由于产品设计的时候没有这种布局嵌套的概念,致使程序员开发出产品想要的效果就容易形成过分绘制的状况。性能

 

过分绘制形成的结果是在部分性能差的设备,会出现卡顿的问题,不过通常对于当年出的设备不会形成影响。测试

 

--------------------------------------------------------------------------------------------------------------------------------------------优化

此外,开发者选项中还有一个选项‘GPU呈现模式分析’,选择'在屏幕上显示为条形图'就会发现界面底部出现条形图spa

每一条柱状线都包含三部分, 
蓝色表明测量绘制Display List的时间, 
红色表明OpenGL渲染Display List所须要的时间, 
黄色表明CPU等待GPU处理的时间。 
设计

中间有一根绿色的横线,表明16ms,咱们须要确保每一帧花费的总时间都低于这条横线,这样才可以避免出现卡顿的问题。

当频繁超过绿线的时候对于性能很差的时候就会出现卡顿的状况。

 

相关知识:

CPU: 中央处理器,它集成了运算,缓冲,控制等单元,包括绘图功能.CPU将对象处理为多维图形,纹理(Bitmaps、Drawables等都是一块儿打包到统一的纹理).

GPU:一个相似于CPU的专门用来处理Graphics的处理器, 做用用来帮助加快格栅化操做,固然,也有相应的缓存数据(例如缓存已经光栅化过的bitmap等)机制。

OpenGL ES是手持嵌入式设备的3DAPI,跨平台的、功能完善的2D和3D图形应用程序接口API,有一套固定渲染管线流程. 附相关OpenGL渲染流程资料

DisplayList 在Android把XML布局文件转换成GPU可以识别并绘制的对象。这个操做是在DisplayList的帮助下完成的。DisplayList持有全部将要交给GPU绘制到屏幕上的数据信息。

格栅化 是 将图片等矢量资源,转化为一格格像素点的像素图,显示到屏幕上,过程图以下.

 

------------------------------------------------------------------------------------------------------------------------------------

 

优化

Android对于界面渲染流畅的要求为 1秒钟60帧  即每一帧都在16.6ms内

 

优化点:

一、icon图片尽可能使用 png格式  , 照片等大型图片用jpg

二、减小多余的嵌套层数

三、外层设置背景颜色以后,内部view能够再也不设置背景颜色值

四、自定义view的优化

相关文章
相关标签/搜索