Я реализую приложение фильтра камеры, используя GLES, например, GPUImage, на мобильных устройствах.
Чтобы создать окончательно отфильтрованное изображение, необходимо отрендерить подчиненные фильтры на ранее отфильтрованном изображении. Мой подход заключается в создании нескольких FBO для каждого шага фильтра.
Например, если я использую три фильтра для получения окончательного результата, тогда создайте 3 FBO. Привязать FBO1 и рисовать, затем привязать FBO2, используя рисование текстуры FBO1 и т. Д.
Однако, поскольку мне не нужно содержимое FBO1, когда я рисую на FBO3, используя текстуру FBO2, если я снова использую FBO1 вместо FBO3, мне не нужно создавать много FBO.
Я не уверен, какой из них лучше или какой-либо выигрыш в производительности, просто создать несколько FBO для каждого шага фильтра? или переключение между первым и вторым FBO. Заранее спасибо.
Я показываю пример кода ..
glBindFramebuffer(fbo1);
glClear();
glBindTexture(camera-texture);
draw();
glBindFramebuffer(fbo2);
glClear();
glBindTexture(fbo1-texture);
draw();
glBindFramebuffer(fbo3);
glClear();
glBindTexture(fbo2-texture);
draw();
...
or
If i swtich FBOs..
glBindFramebuffer(fbo1);
glBindTexture(camera-texture);
glClear();
draw();
glBindFramebuffer(fbo2);
glClear();
glBindTexture(fbo1-texture);
draw();
glBindFramebuffer(fbo1);
glClear();
glBindTexture(fbo2-texture);
draw();
...