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

Android 深入系统完全讲解(21)

关键性 EGLSurface 代码位置

在这里插入图片描述
继续再看看,代码跑到 C 里面去了。

在这里插入图片描述
然后关键点:
在这里插入图片描述
获取本地窗口,创建 Surface,然后 toEGLHandle 进行包裹,变成 EGL 上下文。
EGLSurface 。 绘制的设计本质逻辑
在这里就回归一点,我们再聊下之前说的,绘制的本质就是屏幕的缓存区域,那个区域是自
动刷新,然后我们只需要把数据丢上去就可以。
但是,我们的界面,不可能只有一个界面,会有多个界面,所以上层不能共用一个缓存区域。
(当然最早的 功能机,使用的一个缓存区域,原因是内存不足)
所以,我们都会设计成,每个 Activity 都有一个画布,都对应一个缓存区域,上面的各种控
件,默认的常见控件,TextView 都画在这里。
然后底层会在每一帧完成后,进行合并,依据每个界面的上下级关系,透明度,大小进行合
并,然后推送到屏幕的缓存区域。
这样子就完成了整个设计。
而画布怎么画,我拿到的一个内存区域,该如何去画,需要工具,所以默认的包裹方式是
canvas,这个叫做画布。
然而这个画布的缺陷就是在主线程里面,如果大量绘制运算,势必不能在主线程,所以就出
现了 surfaceView,进行单独创建画布,可以使用 canvas。
同时这个 canvas 使用的是 CPU,在硬件里面还有个专门做图像运算的,做特效更快一些,
就是 GPU。
所以我们需要使用 GPU,这块就是 OpenGL 或者现在的 Vulkan。
下面我们看看一些框架,关于图形的一些介绍,后面我们会说下关于 GLSurfaceView ,这个专
门提供的 OpenGL VIew ,更加方便一些。

图形框架
在前面的讲解里面,大家熟悉了 Surface SurfaceHolder SurfaceView 以及普通 View 的绘制过
程。这 一 节 我 们 简 单 聊 一 些 组 件 , 概 念 , 这 块 参 考 官 网 。
https://source.android.google.cn/devices/graphics/architecture

在这里插入图片描述
然后上层主要就是 SurfaceView 和 GLSurfaceView 。像 TextureView ,SurfaceTexture 都是
可以去用。TextureView 会有 View 的一些特性,动画,可以使用 View 动画。
在这里,我们还是需要看一个信息,就是关于 SurfaceFlinger 和 WindowManager,我们看
下官方的解释。

相关文章:

  • 邢台信息港二手车出售/广州seo网站
  • 网站开发环境写什么/百度浏览器网址
  • 公安局网站开发商/想学管理方面的培训班
  • 如何做网站的伪静态页面/龙泉驿网站seo
  • dw做网站字体 别人电脑显示/关键词排名优化公司成都
  • 金顶街网站建设/软件工程培训机构哪家好
  • 【图灵商城】前、后端项目搭建与运行
  • 视频场景切换检测(镜头边界检测、镜头分割)
  • OSCP-Vulnhub靶机记录-Hacker_Kid-v1.0.1
  • CSS 伪元素也可以被用于反爬案例?来学习一下。26
  • 医疗电气设备安规术语理解
  • 从南丁格尔图到医学发展史
  • Delphi 11.2 安装 CnWizards 组件包
  • 基础数字(一)位运算 哈希(数组中元素出现次数)
  • 高精度减法【c++】超详细讲解
  • WPS Office 2019 版本 excel透视图创建及删除
  • 完美Crack:Froala Editor 4.0.16 Patch
  • Jenkins配置邮箱接收构建通知