Как постобработать изображение с помощью шейдеров в OpenGL?

#opengl #shader

#opengl #шейдер

Вопрос:

Шейдеры не могут считывать данные из фреймбуфера, они могут передавать данные только вперед по конвейеру рендеринга. Но для постобработки необходимо прочитать отрисованное изображение.

Я собираюсь решить эту проблему следующим образом: 1) создать текстуру размером с окно просмотра; 2) отрендерить изображение в текстуру обычным способом; 3) отрендерить текстуру в фреймбуфер, пропустив ее через шейдер постобработки.

Я все делаю правильно? Существуют ли более эффективные способы постобработки?

Комментарии:

1. Зависит от параметров, необходимых для постобработки. Вы хотите, чтобы все изображение было отрисовано для запуска постобработки?

2. Да, я делаю. Например, я хочу исказить конечное изображение, как если бы оно отражалось в кривом зеркале.

Ответ №1:

Это действительно обычный способ постобработки! Визуализируйте текстуру, привязав FBO для вашего первого прохода, затем используйте эту текстуру в качестве входных данных вашего шейдера постобработки после отмены привязки вашего FBO (т. Е. Возврата к буферу кадров по умолчанию).