效果如图
实现思路
其实方法很简单,总的来说分为以下几步:
- 用一个摄像机记录当前场景不加遮罩的总体效果(whole)
- 用一个摄像机记录需要被遮罩的部分(target)
- 用一个摄像机记录不需要被遮罩的部分(other)
- 比较target与whole,找出需要被渲染的部分,然后与other一起渲染
这个方法比较笨,个人技术水平有限,暂时没想到更简洁的方法,不知道大佬们有不有其他好思路
在比较target与whole的时候是在shader里面直接比较rgba,局限性比较大,透明度不为1或者0的话就不行了
源码地址
https://github.com/ChengXu1973/selective-masking
一点疑问
之前在论坛提问,帖子沉了,其实就是想做这个效果,求大佬们答疑解惑
cocos2D里面如何获取camera的深度缓冲呢?