zoukankan      html  css  js  c++  java
  • 【OpenGL】掩模

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

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

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

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

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

    具体方法

    1.生成背景图片

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

    3.加载黑白图片

            

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

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

            

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

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

           

  • 相关阅读:
    ubuntu远程windows桌面
    spring boot 给返回值加状态 BaseData
    spring boot 拦截异常 统一处理
    IntelliJ IDEA spring boot 远程Ddbug调试
    IntelliJ IDEA 常用插件
    spring boot 请求地址带有.json 兼容处理
    spring boot 接口返回值去掉为null的字段
    spring boot 集成disconf
    Spring boot 自定义拦截器
    Linux下安装MySQL
  • 原文地址:https://www.cnblogs.com/nonkicat/p/2993492.html
Copyright © 2011-2022 走看看