Рендеринг FBO к тому же FBO - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь создать призрачный фильтр для камеры.Это требует смешивания предыдущего кадра с текущим.Я использую один FBO для микширования, а второй - просто помещаю контекст на экран.Моя реализация работает на 4 из 5 устройств, которые я пробовал.На пятом (Samsung galaxy 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);
    }
}

Но на Samsung я получаю несколько правильных и случайных пикселей в качестве следующего примера.Некоторые черные и другие случайные пиксели растут вместе с пикселями камеры.Есть идеи о том, что может быть не так?

Образец ошибки
Fault sample

Правильный образец
Correct sample

...