昆山做网站的jofuns,深圳景观设计公司排名,网站规划的注意事项,微信公众官网登录目录
引言
组件概述
底层组件#xff1a;
上层组件#xff1a; 引言
Android图形架构主要涉及些什么呢#xff1f; 1#xff09;Android 系统级图形架构的基本元素#xff1f; 2#xff09;应用框架和多媒体系统如何使用这些元素#xff1f; 3#xff09;图形数据…目录
引言
组件概述
底层组件
上层组件 引言
Android图形架构主要涉及些什么呢 1Android 系统级图形架构的基本元素 2应用框架和多媒体系统如何使用这些元素 3图形数据的缓冲区是如何在系统中移动的 4) Surface 和 EGLSurface 的交互方式? 5) SurfaceView 和 TextureView 的区别 6合成和显示机制是怎样的 7合成器提供数据的更高级别的机制
组件概述
底层组件
BufferQueue 和 Gralloc 1Bufferqueue 连接 图像流的生产者和消费者 2通过HAL层接口实现gralloc内存分配器用于执行缓冲区分配任务 SurfaceFlinger、Hardware Composer、Vertual Displays 1SurfaceFlinger接受来自多个源的数据缓冲区然后将它们进行合成 2HWC 使用硬件合成缓冲区 3虚拟显示屏使合成输出可在系统内部使用录屏或者通过网络发送屏幕 Surface、Canvas、SurfaceHolder 1Surface可生成一个缓冲区队列通常是给Surfaceflinger使用的。可以渲染到Surface上最终传给消费者缓冲区 2Canvas API提供一种软件实现方法支持硬件加速直接在Surface上绘图。是OpneGLES方式绘图的底层替代方案。 3SurfaceHolder的API可以用于获取和设置Surface的参数大小和格式 EGLSurface、OpenGLES 1OpenGL ESGLES旨在与EGL结合使用的图形渲染API 2EGL是一个通过操作系统创建和访问窗口的库。 3要绘制纹理多边形请使用 GLES 调用要将渲染应用到屏幕上请使用 EGL 调用 4ANativeWindow它是 Java Surface 类的 C/C 等价类用于通过原生代码创建 EGL 窗口Surface。 Vulkan 1Vulkan 是一种用于高性能 3D 图形的低开销、跨平台 API。 2与 OpenGL ES 一样Vulkan 提供用于在应用中创建高质量实时图形的工具。 3Vulkan 的优势包括降低 CPU 开销以及支持 SPIR-V 二进制中间语言。
上层组件
SurfaceView、GLSurfaceView 1SurfaceView 结合了 Surface 和 View。就是缓冲区队列和View。 2SurfaceView 的 View 组件由 SurfaceFlinger而不是应用合成从而可以通过单独的线程/进程渲染并与应用界面渲染隔离。 3GLSurfaceView 提供了用于管理 EGL 上下文、线程间通信以及与 activity 生命周期的交互的帮助程序类但不是必须使用 GLES SurfaceTexture 1SurfaceTexture 将 Surface 和 GLES 纹理相结合来创建 BufferQueue而您的应用是 BufferQueue 的消费者。 2当生产者将新的缓冲区排入队列时它会通知您的应用。您的应用会依次释放先前占用的缓冲区从队列中获取新缓冲区并执行 EGL 调用从而使 GLES 可将此缓冲区作为外部纹理使用。 3Android 7.0 添加了对安全纹理视频播放的支持以便对受保护的视频内容进行 GPU 后处理。 TextureView 1TextureView 结合了 View 和 SurfaceTexture。 2TextureView 对 SurfaceTexture 进行包装并负责响应回调以及获取新的缓冲区。 3在绘图时TextureView 使用最近收到的缓冲区的内容作为其数据源根据 View 状态指示在它应该渲染的任何位置和以它应该采用的任何渲染方式进行渲染。 4View 合成始终通过 GLES 来执行这意味着内容更新可能会导致其他 View 元素重绘。