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

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

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

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

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

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

    具体方法

    1.生成背景图片

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

    3.加载黑白图片

            

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

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

            

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

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

           

  • 相关阅读:
    华为 简单OSPF实验
    华为 基于MAC地址的VLAN划分
    完全背包
    01背包问题
    90. 子集 II
    Java去除字符串中的特殊符号或者指定的字符
    Java查找指定文件夹下的所有文件
    Java面试基础
    Spring获取ApplicationContext
    JSP & EL & JSTL
  • 原文地址:https://www.cnblogs.com/nonkicat/p/2993492.html
Copyright © 2011-2022 走看看