• 【OpenGL】掩模


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

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

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

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

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

    具体方法

    1.生成背景图片

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

    3.加载黑白图片

            

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

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

            

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

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

           

  • 相关阅读:
    构建SpringBoot第一个Demo
    SpringBoot简介
    JSJ——主数据类型和引用
    CSS3--动态实现ToolTip效果(实例)
    JavaScript--DOM事件(笔记)
    CSS3--幽灵按钮特效(实例)
    CSS3--实现特殊阴影 (实例)
    深入浅出ExtJS 第七章 弹出窗口
    深入浅出ExtJS 第六章 布局
    深入浅出ExtJS 第五章 树形结构
  • 原文地址:https://www.cnblogs.com/nonkicat/p/2993492.html
Copyright © 2020-2023  润新知