iOS-Rendering-渲染解析问题解答

37次阅读

共计 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
所以存在效率问题


正文完
 0