当前位置: 首页 > news >正文

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是相关知识。

后记

写了这篇文章后,忽然发现我写的都在官方文档中,但是不仔细思考,确实很难理解官方文档。以后最好可以结合几篇文章,更深入理解

http://www.lqws.cn/news/440605.html

相关文章:

  • 【MySQL基础】MySQL内置函数全面解析:提升你的数据库操作效率
  • AI与大数据如何驱动工业品电商平台的智能决策?
  • mongodb单节点改副本集模式
  • Spring Boot + MyBatis + Vue:打造高效全栈应用的黄金组合
  • CppCon 2017 学习:Esoteric Data Structures and Where to Find Them
  • 《汇编语言:基于X86处理器》第2章 复习题
  • infinisynapse 使用清华源有问题的暂时解决方法:换回阿里云源并安装配置PPA
  • flink的多种部署模式
  • YOLOv8改进:Neck篇——2024.1全新MFDS-DETR的HS-FPN特征融合层解析
  • 使用 rsync 拉取文件(从远程服务器同步到本地)
  • Mac 安装ElasticSearch和Kibana详细教程
  • 【面试题002】synchronized和lock的区别
  • C#最佳实践:为何优先使用查询语法而非循环
  • Kafka使用Elasticsearch Service Sink Connector直接传输topic数据到Elasticsearch
  • 清除 docker 无用的 镜像/容器
  • 国产Linux银河麒麟操作系统安装中望CAD和开源社区版QCAD软件
  • python智慧物业管理系统
  • 数据差异的iOS性能调试:设备日志导出和iOS文件管理
  • LVS 负载均衡群集
  • 【目标检测】非极大值抑制(NMS)的原理与实现
  • 拆分合并PDF 图片互转——c#编程实现
  • 怎么把idea的maven项目按照层级显示
  • Python设计模式终极指南:18种模式详解+正反案例对比+框架源码剖析
  • C++ 运算符重载
  • 基于Python的房屋信息可视化及价格预测系统
  • 《Kubernetes》Pod详解+Pod控制器
  • openssl创建证书解决不安全问题
  • electron 嵌入web网页的三种方式
  • 将多个Excel合并到一个Excel中的方法
  • Vue3 + Axios + Ant Design Vue 请求封装详解教程(含 Token 鉴权、加密、下载)