欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android OpenGL ES實現(xiàn)簡單綠幕摳圖

 更新時間:2022年06月23日 14:55:17   作者:deep_sadness  
這篇文章主要為大家介紹了Android OpenGL ES實現(xiàn)簡單綠幕摳圖示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

實現(xiàn)綠幕摳圖,其實想法很簡單。 這里簡單粗暴的使用著色器替換。

OES Filter

直接實現(xiàn)在相機(jī)預(yù)覽上的Shader

#extension GL_OES_EGL_image_external : require
precision mediump float;
                                
varying vec2 vTextureCoordinate;
uniform samplerExternalOES uTexture;

const float pixel = 30.0;
void main() {
    vec4 tc = texture2D(uTexture, vTextureCoordinate);
    float r = tc.x * 255.0;
    float g = tc.y * 255.0;
    float b = tc.z * 255.0;

    if(g>140.0 && r<128.0 && b<128.0){
        tc.x =1.0;
        tc.y =1.0;
        tc.z =1.0;
         tc.w =0.0;
    }else{
     tc.w =1.0;
    }

    gl_FragColor = tc, 1.0;
}

這里的關(guān)鍵是,判斷顏色的范圍。這里簡單的認(rèn)定 g>140.0 && r<128.0 && b<128.0 時為綠色。當(dāng)是綠色的時候,就將其顏色換成白色。同時alpha值設(shè)置為0.0

BlendShader Filter

這個Shader是將背景的紋理,進(jìn)行貼圖,貼到我們扣的這部分圖上。

precision mediump float;

varying vec2 vTextureCoord;
varying vec2 vExtraTextureCoord;

uniform sampler2D uTexture;
uniform sampler2D uExtraTexture;

void main() {
    vec4 base = texture2D(uTexture, vTextureCoord);
    vec4 overlay = texture2D(uExtraTexture, vExtraTextureCoord);
    vec4 outputColor;
    if(base.r==1.0 && base.g==1.0 && base.b==1.0 && base.a==0.0){
      outputColor.r = base.a*base.r + overlay.r * (1.0 - base.a);
      outputColor.g = base.a*base.g + overlay.g * (1.0 - base.a);
      outputColor.b = base.a*base.b + overlay.b * (1.0 - base.a);
      outputColor.a = base.a;
    }else{
       outputColor.r = base.r;
       outputColor.g = base.g;
       outputColor.b = base.b;
       outputColor.a = base.a;
    }
    gl_FragColor = outputColor;
}

這個shader就是加載了兩個貼圖。一個是來自上面相機(jī)的FBO的OffscreenTextureId,一個是來自我們另外的背景貼圖。 這段代碼就算,如果是辨認(rèn)到之前我們處理的區(qū)域的話,就將兩個圖片貼加到一起,如果是范圍內(nèi),就用原來的圖片。

簡單的綠幕摳圖很簡單,只是判斷到對應(yīng)的顏色,然后將對應(yīng)的貼圖貼到這個部分上,就可以了。

最后的效果

  • 屏幕中的原圖

最后的效果

缺陷

邊緣情況比較明顯。顯示比較突兀。 我們可以做的更好嗎?

更多關(guān)于Android OpenGL ES綠幕摳圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論