【OpenGL】掩模

有的时候我们想要实现这么一个效果:想要透过某个事物,看过背后的场景,而被事物掩盖的部分无法被看见。

这时候可能会想当然的认为,只要设置好相应的深度就可以了。愿望是美好的,现实的残酷的,如果仅是单纯地设置深度,你看到的图片会是以下情景:

如上所见,最后看到的画面中,两种图片看起来没有鲜明的区分,有颜色的地方重叠在一起,而没有看到我们希望的:图片分明,一张图片掩盖在另一张图片上。

这时候我们需要的就是利用掩模(masking)技术

所谓的掩模技术,就是运用混色原理,先用一张黑白图片,盖住背景图片,然后在真正画上彩色图片,让彩色的部分真正鲜明的表示出来。

具体方法

1.生成背景图片

2.启用混合方式,禁用深度测试。

3.加载黑白图片

        

       这里我们用到了glBlendFunc(GL_DST_COLOR,GL_ZERO),这就意味着,图片中黑色的地方被掩盖,而白色所对应的底部背景可以被看见。

4.加载黑白图片相对应的彩色图片

        

       在这里我们用到了glBlendFunc(GL_ONE,GL_ONE);最终颜色实际是源颜色和目标颜色相加而成的。

然后我们最后看到的画面如下,背景图片和掩盖事物的图片颜色分明,不在混合在一起了。

       

 

posted @ 2013-04-01 14:57  のんきネコ  阅读(446)  评论(0编辑  收藏  举报