android 界面是如何显示到屏幕上的

android 界面是如何显示到屏幕上的

  android 系统提供了一系列的绘图渲染api,这些api支持2D绘图和3D绘图;那么理解这些api是如何工作的,还是十分重要的。应用开发者最常用的就是Canvas和OpenGL,Canvas侧重于2D,而OpenGL则是全能。Canvas的绘图操作最终会通过OpenGLRender进行转换,转换为OpenGL支持的动作,并由GPU渲染;也就是说Canvas也是通过OpenGL库工作的。

  无论你使用哪种api,这些操作最终还是会渲染到Surface上。Surface代表了生产者,负责生产BufferQueue;与它对立的是作为消费者的SurfaceFlinger。

下面的图讲述了主要部件的工作流程。

 

 

Image Stream Producers

  图像生产者:任何生成graphics buffer的组件,包括但不限于Canvas,OpenGL,多媒体服务,视频解码器。

Image Stream Consumers

  图像消费者: 这个图像流消费者一般指的是SurfaceFlinger系统服务,SurfaceFlinger负责组织可视Surface,并修改Display,只有SurfaceFlinger可修改DisPlay。OpenGL ES app比如相机程序,carmera也可以消耗图像流。

Window Manager

  负责管理系统中的Window,Window manager由Surface支持实现,Window Manager将元数据发动到SurfaceFlinger。

Hardware Composer

  用来展示子系统的硬件抽象层,SurfaceFlinger可以帮助OpenGL 和GPU做已经明确的,组合数据的工作,这样就能减轻GPU和OpenGL的工作,这样会更省资源和电量。SurfaceFlinger工作还是利用OpenGL ES,相当于OpenGL ES 客户端。

Gralloc

  graphics memory allocator 绘制内存生成器

 

posted @ 2016-09-13 17:25 清澈见底 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值