简介
MaskableGraphic在 Graphic的基础上实现了裁剪与遮罩功能。
这主要是由 IClippable、IMaskable 两个接口来实现的。
在Graphic更新材质的流程中有提及Mask。Graphic 可以理解成由骨头和皮肤所组成,骨头即顶点信息所构建的网格(Mesh),皮肤则是依附于Mesh的材质和纹理。实际上Mesh是不可见的,对于可见物的处理(例如Mask遮罩剔除)都是针对于Material。
理解清楚IClippable与IMaskable相关的组件原理便是理解MaskableGraphic的关键。
遮罩原理剖析
Mask是利用了GPU的模板缓冲来实现的
Mask的关键代码其实只有一行,如下:
var maskMaterial = StencilMaterial.Add(baseMaterial, 1, StencilOp.Replace, CompareFunction.Always);
它的作用是为Mask对象生成