Android屏幕渲染

1 相关知识点

  • CPU:中央处理器,它集成了运算、缓冲、控制单元包括绘图功能等。CUP将对象处理为多维图形、纹理(Bitmaps,Drawables等都是一起打包到统一的纹理)。
  • GPU:一个类似于CPU的专门用来处理图形的处理器,作用是用来帮助快速栅格化操作,GPU也有相应的缓存数据(例如缓存已经栅格化的bitmap等)机制。
  • OpenGL ES:是手持嵌入式设备的3DAPI,跨平台的、功能完善的2D和3D图形应用程序接口API,有一套固定渲染管线流程。
  • DisplayList:在Android设备上将XML布局文件转化成GPU能够识别并绘制的对象。这个操作是在DisplayList的帮助下完成的。DisplayList持有所有将要交给GPU绘制到屏幕上的数据信息。
  • 栅格化:是将图片等矢量资源转化为一格格像素点的像素图,然后显示在屏幕上。过程如图1.1所示。
     
    在这里插入图片描述
    图1.1 栅格化过程
  • 垂直同步Vsycn:Vsync是Vertical Synchronization的缩写,可以简单理解成一种定时中断。App在Vsync结束的时间点绘制画面,也是在这个时间点SurfaceFlinger进行画面合成,这种机制消除了卡顿,提高了图形的视觉表现。垂直同步机制下的绘制过程如下图1.2所示。
     
    在这里插入图片描述
    图1.2 Vsync机制下的绘制过程

每个Vsync的时间间隔大约是16.6ms,渲染操作通常依赖两个核心组件:CUP与GPU。CUP负责包括measure,layout,record,execute的计算操作,GPU负责Rasterization(栅格化)操作。栅格化就是解决XML布局文件和标记语言,使之转化为用户能看懂的图像,但是这不是直接转换的,XML布局文件需要在CPU中首先转化为多边形或者纹理,然后再传递给GPU进行栅格化,栅格化跟OpenGL有关,16ms的时间主要被两件事情占用,第一件:将UI对象转换为一系列多边形和纹理;第二件:CPU传递处理数据给GPU,然后GPU进行栅格化。

2 渲染机制

2.1 渲染流程

UI对象---->CPU处理为多维图形,纹理 -----通过OpeGL ES接口调用GPU----> GPU对图进行光栅化(Frame Rate ) ---->硬件时钟(Refresh Rate)----垂直同步---->投射到屏幕
在这里插入图片描述

参考文章

https://blog.csdn.net/houliang120/article/details/50908098
https://www.jianshu.com/p/1ef2a9e5aa91

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值