圆角不一定触发离屏渲染。
普通渲染是将绘制的内容放在帧缓存区中;离屏渲染将绘制内容放到offscreen buffer(限制为屏幕的2.5倍) 离屏缓冲区,然后叠加再显示。
mask(遮罩) 触发 app CoreAnimation -> render server -> 顶点着色器 -> 片元(像素)着色器 -> 遮罩 -> 离屏缓冲区(额外的存储空间,空间限制屏幕的2.5倍) -> 合并->显示、
离屏渲染:app需要额外的渲染或合并,保存中间状态;光栅化:复用
离屏缓冲区不属于双缓冲区。
触发:mask 裁剪 组透明度 投影 光栅化(片段) 文字绘制。
光栅化建议,以下不用
1、layer不能复用
2、非静态,频繁修改
3、100ms内没被复用
4、超过2.5倍屏幕像素
油画算法:由远及近。
透视投影:远小近大。
三种传数据的方式
attribute属性 :代码 - >顶点着色器 包括顶点数据、投影矩阵、模型矩阵、纹理坐标
texture data
uniform
逆时针:正三角 顺时针:背三角
三角形带/三角形扇:复用 节省空间
顶点着色器(.vsh)和片元着色器(.fsh)、细分着色器都是可编程
固定着色器:也有有顶点着色器(.vsh)和片元着色器(.fsh)。
单元着色器
平面着色器
默认光源着色器
纹理替换矩阵着色器:
纹理调整着色器