首页 文章

如何在WebGL中实质上使用“色度键”?

提问于
浏览
1

我试图弄清楚如何根据颜色设置我绘制的纹理方块的alpha . 我正在使用带有白色背景的红色阿拉巴马州A的照片 . 我希望能够切换它以取出红色并通过A显示并切换它以取出白色并离开A.我有2个纹理方块 . 一个是背景,所以我认为我不能在frag着色器中做到这一点,因为它会对两个图像做到这一点吗?在我的主要js文件中,当我点击切换HTML按钮时,我需要能够将“色度键”从红色切换为白色 .

那么,如果只有4个真正的颜色点,我如何根据像素更改纹理正方形的alpha?或者6个点,其中2个被使用两次(2个三角形) .

顺便提一下,这只是二维 .

1 回答

  • 0

    Terse版本使用红色或其他东西为您的alpha

    使用alpha的红色

    gl_FragColor = color.rgbr;
    

    使用不是红色的东西(例如绿色)来表示alpha

    gl_FragColor = color.rgbg;
    

    现在你需要一些方法来选择

    uniform bool useRed;
    
    ...
    
    gl_FragColor = vec4(color.rgb, useRed ? color.r : color.g);
    

    或者更有创意的方法是混合红色和绿色 .

    uniform float mixAmount; // 0 = red, 1 = green
    ...
    gl_FragColor = mix(color.rgbr, color.rgbg, mixAmount);
    

相关问题