【OpenGL】掩模

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

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

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

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

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

具体方法

1.生成背景图片

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

3.加载黑白图片

        

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

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

        

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

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

       

 

posted @   のんきネコ  阅读(455)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示