Android图形系统框架解析
前言
Android图形系统对于开发者来说可能会比较难以理解,因为涉及的东西可能会计较多,比如Android自己的图形系统。OpenGL,视频编解码器,SurfaceFlinger,FrameBuffer等等。下面我们结合官方文档,介绍一下图形系统架构,主要侧重APP层。
正文
图形系统比较容易让人熟悉的是surface,官方文档如下:
Surface 是一个接口,供生产方与消耗方交换缓冲区
通俗的说,他就是一个图形队列,把生产方和消费方链接在一起。
下面讲解
这里就比较号理解,图形生产者就是播放器,摄像机,Android的图形系统(包括ndk和自定义view),以及OpenGL(vukan)。
这里有个特别的技巧,生产者可以叠加,比如播放器输出的图像,可以进入OpenGL,可以处理,叠加图形元素,进而输出。所以生产者也有可能是其他的消费者。层次结构大概如下
我们继续分析官方的图片,我们现在了解了图像生产者。下面分析native FrameWork。这个东西是控制图像传输的关键,其实就是surface封装的实现。Surface.cpp 是对Surface.java 等封装,里面存着GLConsumer。可以请求真的生产者声场更多的图像,可以收到图形生产者的数据。在和SurfaceFlinger相互通讯。
而数据消费者这里比较明确是SurfaceFlingure。其实还有录像机或者图片保存器。这里不再详细介绍。
至于SurfaceFingure和hwc,这里就不在详细介绍,这个暂时超出我的认知,以后有空详细介绍。
以后希望分析三个部分surfaceView。surface。解码器。结合实际情况,深入了解。
todo
以后补充SurfaceFlinger、HWC和window是相关知识。
后记
写了这篇文章后,忽然发现我写的都在官方文档中,但是不仔细思考,确实很难理解官方文档。以后最好可以结合几篇文章,更深入理解