将FBO渲染到相同的FBO

时间:2019-01-30 15:43:38

标签: android opengl-es rendering fbo

我正在尝试创建类似鬼像的相机滤镜。这需要将前一帧混合到当前帧。我使用一个FBO进行混合,然后使用第二个FBO将上下文简单地放在屏幕上。 我的实现可以在我尝试过的5个设备中的4个上工作。在第五个(三星银河S7)上,我得到了一些随机像素。

以下是再现错误的更简单的着色器(帧计数器和裁剪仅用于调试)。结果是我逐渐到达屏幕中央的行。

uniform samplerExternalOES camTexture;
uniform sampler2D           fbo;

uniform int                 frame_no;

varying vec2 v_CamTexCoordinate;

void main ()
{
    vec2 uv = v_CamTexCoordinate;

    if(frame_no<10){
        gl_FragColor = texture2D(camTexture, uv);
    }else{
        if(uv.y>0.2 && uv.y<0.8 && uv.x>0.2 && uv.x<0.8)
            gl_FragColor = texture2D(fbo, uv + vec2(0.0, +0.005));
        else
            gl_FragColor = texture2D(camTexture, uv);
    }
}

但是在三星上,我得到了一些正确的像素和一些随机的像素,如下例所示。一些黑色和其他随机像素与相机像素一起上升。有什么问题的想法吗?

故障样本
Fault sample

更正样品
Correct sample

0 个答案:

没有答案