【OpenGL】掩模
有的时候我们想要实现这么一个效果:想要透过某个事物,看过背后的场景,而被事物掩盖的部分无法被看见。
这时候可能会想当然的认为,只要设置好相应的深度就可以了。愿望是美好的,现实的残酷的,如果仅是单纯地设置深度,你看到的图片会是以下情景:
如上所见,最后看到的画面中,两种图片看起来没有鲜明的区分,有颜色的地方重叠在一起,而没有看到我们希望的:图片分明,一张图片掩盖在另一张图片上。
这时候我们需要的就是利用掩模(masking)技术。
所谓的掩模技术,就是运用混色原理,先用一张黑白图片,盖住背景图片,然后在真正画上彩色图片,让彩色的部分真正鲜明的表示出来。
具体方法:
1.生成背景图片
2.启用混合方式,禁用深度测试。
3.加载黑白图片
这里我们用到了glBlendFunc(GL_DST_COLOR,GL_ZERO),这就意味着,图片中黑色的地方被掩盖,而白色所对应的底部背景可以被看见。
4.加载黑白图片相对应的彩色图片
在这里我们用到了glBlendFunc(GL_ONE,GL_ONE);最终颜色实际是源颜色和目标颜色相加而成的。
然后我们最后看到的画面如下,背景图片和掩盖事物的图片颜色分明,不在混合在一起了。