当前位置:网站首页>面试知识点整理:Skia 架构的场景渲染
面试知识点整理:Skia 架构的场景渲染
2022-08-02 03:26:00 【Android技术栈】
前言
大家都知道渲染层级从渲染流程上分,Skia可分为如下三个层级:
1、指令层:SkPicture、SkDeferredCanvas->SkCanvas 这一层决定需要执行哪些绘图操作,绘图操作的预变换矩阵,当前裁剪区域,绘图操作产生在哪些layer上,Layer的生成与合并
2、解析层:SkBitmapDevice->SkDraw->SkScan、SkDraw1Glyph::Proc 这一层决定绘制方式,完成坐标变换,解析出需要绘制的形体(点/线/规整矩形)并做好抗锯齿处理,进行相关资源解析并设置好Shader
3、渲染层:SkBlitter->SkBlitRow::Proc、SkShader::shadeSpan等 这一层进行采样(如果需要),产生实际的绘制效果,完成颜色格式适配,进行透明度混合和抖动处理(如果需要)
Skia在Android中的地位
1、规定2D绘制API
2、规定图像数据结构
3、承担编解码调度和软件渲染职责
Android系统中主要使用Skia的场景
像近几年的面试问的也越来越深入,比如以下问题:
Skia引擎在android中的运用流程?
Android的View数据转换与渲染?
surfaceflinger在渲染体系中的地位及目的?
UI绘制如何将View中的内容绘制到屏幕?
Android原生界面渲染流程,跟Flutter中的skia引擎关系?
Flutter 中的Framenwork中的UI绘制原理,UI事件处理 与AndroidUI区别?
…
但大多数开发者更多的还是在做业务开发,对于渲染这一块基本停留在"听说过"或者"简单使用工具"的阶段,其中不乏一些工作多年的 Android 工程师
当然如果想要精进,不仅要知道如何做渲染机制的渲染体系,还要对底层渲染原理充分了解,对Skia引擎在Android中的底层相关知识也要充分了解
这样才能够说得上是精通渲染机制
精通意味着:
首先在大厂面试环节,渲染机制基本是必问项,你可以展示出个人实力;
一旦你进入大厂,对渲染机制了解越多,你能够做的事情就越多,产出也会越多,而且可以持续不断去做。
在一些面试中,也会看到一些朋友写“精通渲染机制”,但是让其描述,往往就是一些自己编写的业务,一些去除页面多余嵌套、使用线程池、ViewStub 这些非常浅的方案
想要搞清楚这些,那么必须对各种底层原理有着深度的了解,很多朋友经常遇到措手不及的问题,大多是因为对出现问题的情况和处理思路模糊不清,导致此原因就是因为没有彻底搞懂底层原理。
所以:真正的分水岭是对底层原理的理解。
现如今,国内移动互联网红利期已过,Android 开发也从最初的一人难求,到后来的一个岗位百人竞投,僧多粥少的情况直接导致整个行业对求职者的要求越来越高,
所以,我们只有不断提升自己的技术实力,让自己进阶为高工,才有机会爬上 Android 的顶峰
比如下面这张 Android学习路线图,不少人都看过,但少有人沉下心去仔仔细细研究过。
有需要高清图片的朋友: 现在私信发送 “进阶” 即可免费获取
现在私信发送 “面试” 还可以获取《更多 Android 核心笔记+面试真题》
最后我想说:
对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们
技术是无止境的,你需要对自己提交的每一行代码、使用的每一个工具负责,不断挖掘其底层原理,才能使自己的技术升华到更高的层面
Android 架构师之路还很漫长,与君共勉
边栏推荐
- ES6 array extension methods map, filter, reduce, fill and array traversal for…in for…of arr.forEach
- Alfa: 1 vulnhub walkthrough
- 会计凭证概述、原始凭证、原始凭证的种类、原始凭证的基本内容、原始凭证的填制要求、原始凭证的审核
- 如何在正则表达式里表达可能存在也可能不存在的内容?
- The CTF introductory notes of SQL injection
- Orasi: 1 vulnhub walkthrough
- Eric target penetration test complete tutorial
- The roll call system and array elements find maximum and minimum values for sorting of objects
- web安全之目录遍历
- (6) Design of student information management system
猜你喜欢
(6) Design of student information management system
(4) Function, Bug, Class and Object, Encapsulation, Inheritance, Polymorphism, Copy
Cookie is used to collect the admin privileges CTF foundation problem
Laravel打印执行的SQL语句
The first time to tear the code by hand, how to solve the problem of full arrangement
超级云APP,陪伴您一起成长的软件
uniapp | Compilation error after updating with npm update
2021-09-04 最简单的Golang定时器应用以及最简单的协程入门儿
laravel 写api接口时 session获取不到处理办法
Larave 自定义公共函数以及引入使用
随机推荐
清理c盘爆满告急,C盘清理
web渗透必玩的靶场——DVWA靶场 1(centos8.2+phpstudy安装环境)
Eric target penetration test complete tutorial
文件包含漏洞
CSRF(跨站请求伪造)
DNS详解
加密数字货币前传:从大卫·乔姆到中本聪
SQL注入(6)
C language uses stack to calculate infix expressions
【泰山众筹】模式为什么一直都这么火热?是有原因的
A network security guinea pig's learning path - scripting of advanced usage of nmap
文件上传漏洞
laravel 查询数据库获取结果如何判断是否为空?
laravel-admin 列表图片点击放大
Shuriken: 1 vulnhub walkthrough
hackmyvm: again walkthrough
最简单的FRP内网穿透教程
CTF-网鼎杯往届题目
什么是广告电商商业模式?这几个门派告诉你
解密:链动2+1的商业模式