1、 CPU 和 GPU 的设计目标别离是什么?
cpu是用于简单逻辑计算和管制
领有四个局部 control cache alu dram
其中cache占比比拟大 串行计算 低延时设计。
gpu 图形处理核心
能够进行多线程 高并发
简略计算 大吞吐量
2、 CPU 和 GPU 哪个的 Cache、ALU、Control unit 的比例更高?
cpu cache高
gpu alu 比例高
计算单元 Arithmetic Logic Unit
3、 计算机图像渲染流水线的大抵流程是什么?
图元-顶点着色器-线条着色器
-几何着色器-光栅化-片段着色器
-测试与混合
图像在利用中被解决的阶段,此时还处于 CPU 负责的期间。在这个阶段利用可能会对图像进行一系列的操作或者扭转,最终将新的图像信息传给下一阶段。这部分信息被叫做图元(primitives),通常是三角形、线段、顶点等
4、 Framebuffer 帧缓冲器的作用是什么?
存储通过gpu解决后的bitmap
5、 Screen Tearing 屏幕撕裂是怎么造成的?
当显示器电子束从新开始下一帧的扫描时
帧缓冲器里的bitmap还没有ready
此时扫描进去的是上一帧的内容
而后帧处理器的bitmap被替换
也就是扫了一半就变成了新的bitmap
这样展现的内容就是上一帧和以后帧的拼接
6、 如何解决屏幕撕裂的问题?
vsync 垂直同步信号,
每次电子束完结,
当晚( woqu )屏幕的扫描会发送一个vsync给frame buffer
而后frame buffer才会读取新的frame
7、 掉帧是怎么产生的?
电子束完结以后frame的display
然而 gpu还没有解决完
没有新的bitmap
所以还会展现之前的frame
8、 CoreAnimation 的职责是什么?
Render, compose, and animate visual elements
9、 UIView 和 CALayer 是什么关系?有什么区别?
uiview负责交互 治理子视图 还有展现;
calayer负责存储bitmap
10、 为什么会同时有 UIView 和 CALayer,是否合成一个?
职责明显 便于复用
11、 渲染流水线中,CPU 会负责哪些工作?
handle event
commit transaction
decode
draw calls
12、 离屏渲染为什么会有效率问题?
新开拓一块新的内存空间
offscreen buffer和frame buffer内容替换代价
13、 什么时候应该应用离屏渲染?
须要保留两头渲染过程;效率思考能够将屏幕外的内容事后渲染好保留,达到复用
14、 shouldRasterize 光栅化是什么?
是layer 珊瑚 (woqu)的一个属性,如果存在切圆角、暗影、组透明度这些零碎会默认开。该属性开启后在renderer server中会将生成的bitmap进行保留
15、 有哪些常见的触发离屏渲染的状况?
圆角,暗影,组透明度
16、 cornerRadius 设置圆角会触发离屏渲染吗?
不会
这个之后在background和border上失效
content不会切圆角
须要设置masktobounds或者cliptobounds为yes
才会触发
17、 圆角触发的离屏渲染有哪些解决方案?
图片自带圆角、
减少mask在最上层、
贝塞尔曲线、
drawrect重写
18、 重写 drawRect 办法会触发离屏渲染吗?
不会
会将gpu工作转移到cpu
所以存在效率问题