本文适合于Cocos2d-X等使用OpenGL API的渲染框架
一般实现遮罩效果的方法有以下几种:
- 使用Stencil Buffer
- 使用GL_SCISSOR_TEST(适合矩形区域)
- 使用Shader
- 使用BlendFunc(推荐!)
- 其他的见LibGDX-Masking(生肉)
使用Stencil Buffer
使用OpenGL的是以下几个接口:
glEnable(GL_STENCIL_TEST);
glStencilMask(mask_layer);
glStencilFunc(GL_NEVER, mask_layer, mask_layer);
glStencilOp(!_inverted ? GL_ZERO : GL_REPLACE, GL_KEEP, GL_KEEP);
这个代码是Cocos2d-X中ClippingNode的实现方式,具体源码可以参考CCClippingNode.cpp。这种方法是一种”old school”的技术。缺点是不能抗锯齿,