Android图形-架构2

2023-11-16

目录

引言

组件概述

底层组件:

上层组件:


引言

Android图形架构主要涉及些什么呢?
1)Android 系统级图形架构的基本元素?
2)应用框架和多媒体系统如何使用这些元素?
3)图形数据的缓冲区是如何在系统中移动的?
4) Surface 和 EGLSurface 的交互方式?
5) SurfaceView 和 TextureView 的区别?
6)合成和显示机制是怎样的?
7)合成器提供数据的更高级别的机制?

组件概述

底层组件:

BufferQueue 和 Gralloc:
    1)Bufferqueue 连接 图像流的生产者和消费者
    2)通过HAL层接口实现gralloc内存分配器用于执行缓冲区分配任务
    
SurfaceFlinger、Hardware Composer、Vertual Displays:
    1)SurfaceFlinger接受来自多个源的数据缓冲区,然后将它们进行合成
    2)HWC 使用硬件合成缓冲区
    3)虚拟显示屏使合成输出可在系统内部使用(录屏或者通过网络发送屏幕)
Surface、Canvas、SurfaceHolder:
    1)Surface可生成一个缓冲区队列,通常是给Surfaceflinger使用的。可以渲染到Surface上,最终传给消费者缓冲区
    2)Canvas API提供一种软件实现方法(支持硬件加速)直接在Surface上绘图。是OpneGLES方式绘图的底层替代方案。
    3)SurfaceHolder的API可以用于获取和设置Surface的参数(大小和格式)
EGLSurface、OpenGLES:
    1)OpenGL ES(GLES)旨在与EGL结合使用的图形渲染API,
    2)EGL是一个通过操作系统创建和访问窗口的库。 
    3)要绘制纹理多边形,请使用 GLES 调用,要将渲染应用到屏幕上,请使用 EGL 调用
    4)ANativeWindow,它是 Java Surface 类的 C/C++ 等价类,用于通过原生代码创建 EGL 窗口Surface。
Vulkan:
    1)Vulkan 是一种用于高性能 3D 图形的低开销、跨平台 API。
    2)与 OpenGL ES 一样,Vulkan 提供用于在应用中创建高质量实时图形的工具。
    3)Vulkan 的优势包括降低 CPU 开销以及支持 SPIR-V 二进制中间语言。

上层组件:

SurfaceView、GLSurfaceView:
    1)SurfaceView 结合了 Surface 和 View。就是缓冲区队列和View。
    2)SurfaceView 的 View 组件由 SurfaceFlinger(而不是应用)合成,从而可以通过单独的线程/进程渲染,并与应用界面渲染隔离。
    3)GLSurfaceView 提供了用于管理 EGL 上下文、线程间通信以及与 activity 生命周期的交互的帮助程序类(但不是必须使用 GLES)
    
SurfaceTexture:
    1)SurfaceTexture 将 Surface 和 GLES 纹理相结合来创建 BufferQueue,而您的应用是 BufferQueue 的消费者。
    2)当生产者将新的缓冲区排入队列时,它会通知您的应用。您的应用会依次释放先前占用的缓冲区,从队列中获取新缓冲区并执行 EGL 调用,从而使 GLES 可将此缓冲区作为外部纹理使用。
    3)Android 7.0 添加了对安全纹理视频播放的支持,以便对受保护的视频内容进行 GPU 后处理。
    
TextureView:
    1)TextureView 结合了 View 和 SurfaceTexture。
    2)TextureView 对 SurfaceTexture 进行包装,并负责响应回调以及获取新的缓冲区。
    3)在绘图时,TextureView 使用最近收到的缓冲区的内容作为其数据源,根据 View 状态指示,在它应该渲染的任何位置和以它应该采用的任何渲染方式进行渲染。
    4)View 合成始终通过 GLES 来执行,这意味着内容更新可能会导致其他 View 元素重绘。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android图形-架构2 的相关文章

  • Android第一次动画不流畅

    我正在尝试一个动画将 imageView 从屏幕底部滑动到屏幕中心 但是当我第一次执行此动画时 它不平滑 但当第二次执行动画时 它是正常且平滑的 我几乎尝试了所有方法 但无法解决我的问题 这是我的动画文件
  • 为什么将函数参数声明为最终的?

    我目前正在阅读 Sams 出版的 24 小时自学 Android 应用程序开发 一书 我对 Java Android 或其他方面还比较陌生 我对 ActionScript 3 有非常扎实的背景 它与 Java 有足够的相似之处 因此该语言本
  • Android:“dp”到“px”转换?

    我正在读这篇文章 http developer android com guide practices screens support html http developer android com guide practices scre
  • Android libgdx 首选项丢失

    我在 Libgdx 引擎中创建了 Android 游戏 一段时间后 我注意到在某些应用程序杀手中杀死该应用程序后 或者如果我在 Android 设置中执行 强制关闭 操作 我保存到首选项中的游戏选项就会丢失 有办法防止这种情况吗 我从来没有
  • 接近语法错误(代码1)插入Android SQLite

    我正在创建一个通讯录应用程序 用户可以在其中输入姓名 电子邮件地址和号码 我希望将此数据保存在数据库中 但我似乎无法使插入方法起作用 我收到的错误是 android database sqlite SQLiteException near
  • Android Studio 在编译时未检测到支持库

    由于 Android Studio 将成为 Android 开发的默认 IDE 因此我决定将现有项目迁移到 Android studio 中 项目结构似乎不同 我的项目中的文件夹层次结构如下 Complete Project gt idea
  • 获取 AlarmManager 中活动的 PendingIntents 列表

    我有办法获取活动列表PendingIntent在设备中 我开始工作AlarmManager我想看看我的PendingIntents 已正确创建和删除 也很高兴看到其他什么PendingIntent在那里 只是为了看看某些应用程序是否正在做一
  • 如何在 sqlite 中将 2 列合并为新列

    我有一个包含 3 列的表 我必须将 2 列中的值按降序排列到一列中 A B C z 1 2 f 5 7 s 9 5 使用此示例 输出会将 B 列和 C 列中的值放入其中 如下所示 A B s 9 f 7 f 5 s 5 z 2 z 1 我当
  • OnClick 事件中的 finish() 如何工作?

    我有一个Activity一键退出Activity 通过layout xml我必须设置OnClick事件至cmd exit调用 this finish 效果很好 public void cmd exit View editLayout thi
  • 带有自定义阵列适配器的微调器不允许选择项目

    我使用自定义阵列适配器作为微调器 但是 当在下拉列表中选择一个项目时 下拉列表保留在那里 并且微调器不会更新 这是错误行为 与使用带有字符串的通用数组适配器相比 这是自定义类 我错过了什么吗 谢谢 public class Calendar
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • Android构建apk:控制MANIFEST.MF

    Android 构建 APK 假设一个 apk 包含一个库 jar 例如 foo jar 该库具有 META INF MANIFEST MF 这对于它的运行很重要 但在APK中有一个包含签名数据的MANIFEST MF 并且lib jar
  • Android Webview 图像未加载

    我制作了一个简单的应用程序WebView 但有些图片无法加载 正确 在我的电脑上 错误 在模拟器中 Correct 错误 没有横幅 于是我用Chrome debug进行调试 发现我的代码被改变了 我不添加像noscript or style
  • 材质设计图标颜色

    应该是哪种颜色 暗 材质图标 在官方文档上 https www google com design spec style icons html icons system icons https www google com design s
  • 调节麦克风录音音量

    我们正在尝试调整录音时的音量级别 麦克风似乎非常敏感 会接收到很多静电 我们查看了 setVolumeControlStream 但找不到传入其中来控制麦克风的流 将您的音频源设置为 MIC using MediaRecorder Audi
  • 如何创建像谷歌位置历史记录一样的Android时间轴视图?

    我想设计像谷歌位置历史这样的用户界面 我必须为我正在使用的应用程序复制此 UIRecyclerView 每行都是水平的LinearLayout其中包含右侧的图标 线条和视图 该线是一个FrameLayout具有圆形背景和半透明圆圈Views
  • 如何将设备连接到Eclipse?

    我无法解决这个简单的问题 我正在尝试通过 USB 电缆将我的设备连接到 Eclipse 在我的 PC 上 我已经安装了 Eclipse 和 Android SDK 并且在模拟器上运行该程序运行良好 我已在我的电脑上下载并安装了 Samsun
  • 下载后从谷歌照片库检索图像

    我正在发起从图库中获取照片的意图 当我在图库中使用 Nexus 谷歌照片应用程序时 一切正常 但如果图像不在手机上 在 Google Photos 在线服务上 它会为我下载 选择图像后 我将图像发送到另一个活动进行裁剪 但在下载的情况下 发
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • android Accessibility-service 突然停止触发事件

    我有一个 AccessibilityService 工作正常 但由于开发过程中的某些原因它停止工作 我似乎找不到这个原因 请看一下我的代码并告诉我为什么它不起作用 public class MyServicee extends Access

随机推荐

  • API学习笔记:2.3-2.4 API核心DLL与Unicode和多字节

    API核心DLL与Unicode和多字节 2 3 Windows核心DLL 2 3 1 核心DLL简介 2 4 Unicode和多字节 2 4 1 W版本和A版本的API 2 4 2 Unicode与ASCII的转换 前面几章基本都是总体的
  • ls: 显示目下的内容及相关属性信息

    ls 显示目下的内容及相关属性信息 功能说明 ls 命令可以理解为英文单词 list 的缩写 其功能是列出目录的内容及其内容属性信息 list directory contents 该命令有点类似于DOS系统下的dir命令 有趣的是 Lin
  • Linux内核分析:输入输出,字符与块设备 31-35

    CPU 并不直接和设备打交道 它们中间有一个叫作设备控制器 Device Control Unit 的组件 例如硬盘有磁盘控制器 USB 有 USB 控制器 显示器有视频控制器等 这些控制器就像代理商一样 它们知道如何应对硬盘 鼠标 键盘
  • 左孩子右兄弟 蓝桥杯1451 python

    题目描述 对于一棵多叉树 我们可以通过 左孩子右兄弟 表示法 将其转化成一棵二叉树 如果我们认为每个结点的子结点是无序的 那么得到的二叉树可能不唯一 换句话说 每个结点可以选任意子结点作为左孩子 并按任意顺序连接右兄弟 给定一棵包含 N 个
  • 利用cl_demo_output=>display( )实现日志的功能

    有一些客户需要对一些批处理程序进行消息日志提醒 需要用到弹窗ALV cl demo output gt display 是实现该功能最简单的方式 只需要定义一个内表就行了 如图所以 客户运行了一个库存导入的程序 将BAPI抛出的结果利用弹窗
  • debian 11搭建nis服务器

    NIS的由来与功能 NIS Network InformationService网络信息服务 用于对网络中的多台Linux系统的帐号和密码的集中管理和维护 也就是说可以用同一个帐号登录域中的Linux系统 不需要所登录的系统中存在该帐号 所
  • QT入门笔记(一)QT信号和槽

    QT入门笔记 Qt事件 Qt 事件指的是应用程序和用户之间的交互过程 例如用户按下某个按钮 点击某个输入框等等 实际上除了用户会与应用程序进行交互外 操作系统也会与应用程序进行交互 例如当某个定时任务触发时 操作系统会关闭应用程序 这也是一
  • Linux C基础——” Makefile “ 文件管理大师你拜访过嘛?

    文章目录 Make简介 Makefile基本结构 1 make是如何工作的 2 makefile文件中的依赖关系理解 3 Makefile书写规则 4 Makefile 基础的使用 3 makefile文件中的依赖关系理解 4 创建和使用变
  • 个人博客 blog

    介绍 blog是基于springboot搭建的个人博客 响应式 项目地址 https github com chy1984 blog 前端技术 html css js jq bootstrap 后台技术 springboot thymele
  • 公司章程变更需要经过哪些程序

    公司章程变更需要经过以下程序 1 提议修改公司章程 一般由董事会提出修改建议 董事会是公司经营的决策机构 对公司经营情况以及章程的执行和变化情况较为了解 能够对公司章程的修改提出具有积极意义的建议 2 将修改公司章程的提议通知股东 公司章程
  • 搜索引擎solr系列--3字节的UTF-8序列的字节3无效

    搜索引擎solr系列 3 字节的 UTF 8 序列的字节 3 无效问题 有一次在数据导入的时候 报出了这个错误 大概如下 Data config 3 字节的 UTF 8 序列的字节 3 无效 很明显编码问题 不管你是报了1字节 2字节 之类
  • Idea上运行eclipse项目及打包

    概述 最近有时间 想把原来eclipse的项目迁移到IntelliJ IDEA 中 迁移过程中遇到很多问题 再次记录一下 方便其他 童鞋 快速爬坑 迁移前准备 jdk安装及配置 不会的同学自行度娘 tomcat安装及配置 不会的同学自行度娘
  • System.arraycopy()详解

    java lang System arraycopy 方法复制指定的源数组的数组 在被copy的数组指定的位置开始 到目标数组的指定位置 具体方法如下 public static void arraycopy Object src int
  • IAR8.10.3编译ZStack-CC2530-2.3.0-1.4.0产生的警告解决方法

    http blog chinaunix net uid 24343357 id 3605556 html 分类 嵌入式 1 Warning w2 Symbol PBANK is redefined in command line 2 War
  • [org/springframework/boot/autoconfigure/web/ServerPropertiesAutoConfiguration.class] cannot be opene

    使用feign报错 org springframework beans factory BeanDefinitionStoreException Failed to process import candidates for configu
  • 华为机试真题 C++ 实现【最小调整顺序次数】【100%通过率】【2022.11 Q4 新题】

    题目 给定一个队列 但是这个队列比较特殊 可以从头部添加数据 也可以从尾部添加数据 但是只能从头部删除数据 输入一个数字n 会依次添加数字1 n 也就是添加n次 但是在添加数据的过程中 也会删除数据 要求删除必须按照1 n按照顺序进行删除
  • [docker入门教程系列] 使用dockerfile创建cuda:11.0-cudnn8-devel-ubuntu18.04镜像

    在dockerfile中这样写 FROM nvidia cuda 11 0 cudnn8 devel ubuntu18 04 RUN mv etc apt sources list etc apt sources list bak RUN
  • MyBatis看这一篇就够了(自动映射、手动映射[一对多、多对一]、延迟加载、动态SQL、缓存、逆向工程、分页)

    目录 一 MyBatis简介 1 1 MyBatis历史 1 2 什么是MyBatis MyBatis有啥特点 1 3 什么是ORM 1 4 MyBatis下载 1 5 和其它持久层技术对比 二 搭建MyBatis 2 0 开发环境 2 1
  • C#教程(5)———— 算术运算符

    C 教程 5 算术运算符 前言 1 算术运算符 1 1 基本运算符 1 2 自增自减运算符 3 赋值运算符 总结 前言 在前面的几篇文章中 我们主要介绍了C 的几种数据类型 那么仅仅有了数据对于我们来说还是不够的 否则计算机就不叫计算机了
  • Android图形-架构2

    目录 引言 组件概述 底层组件 上层组件 引言 Android图形架构主要涉及些什么呢 1 Android 系统级图形架构的基本元素 2 应用框架和多媒体系统如何使用这些元素 3 图形数据的缓冲区是如何在系统中移动的 4 Surface 和