共计 1367 个字符,预计需要花费 4 分钟才能阅读完成。
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
所以存在效率问题