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

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.xdnf.cn/news/14525.html

相关文章:

  • 实时输出subprocess.Popen运行程序的日志
  • 面试第三期
  • 【Bug:docker】--Docker同时部署Dify和RAGFlow出现错误
  • Spring-创建第一个SpringBoot项目
  • StableDiffusion实战-手机壁纸制作 第一篇:从零基础到生成艺术品的第一步!
  • 解密提示词工程师:AI 时代的新兴职业
  • 视频续播功能实现 - 断点续看从前端到 Spring Boot 后端
  • C#最佳实践:为何优先使用查询语法而非循环
  • HALCON相机标定
  • Laravel框架的发展前景与Composer的核心作用-优雅草卓伊凡
  • 微信小程序:实现左侧菜单、右侧内容、表单、新增按钮等组件封装
  • 蜻蜓Q系统的技术演进:从Laravel 6到Laravel 8的升级之路-优雅草卓伊凡
  • web3 浏览器注入 (如 MetaMask)
  • 如何获取 vscode 的 vsix 离线插件安装包
  • jmeter学习
  • JETBRAINS IDE 开发环境自定义设置快捷键
  • MySQL存储引擎深度解析:InnoDB、MyISAM、MEMORY 与 ARCHIVE 的全面对比与选型建议
  • FPGA基础 -- Verilog行为级建模之alawys语句
  • 【深度学习】卷积神经网络(CNN):计算机视觉的革命性引擎
  • 最新期刊影响因子,基本包含全部期刊
  • OpenStack入门体验
  • Oracle 详细解析及与 MySQL 的核心区别
  • AI时代的质量显得更为重要
  • 自动打电话软件设计与实现
  • 支持selenium的chrome driver更新到137.0.7151.119
  • 一站式用AI编程神奇Cursor/Trae(VScode环境)开发运行Scala应用
  • 《Effective Python》第九章 并发与并行——使用 Queue 实现并发重构
  • 【力扣 中等 C】2. 两数相加
  • 机器学习常用评估指标
  • win10/win11 快速隐藏/显示桌面图标