#opengl #shader
#opengl #шейдер
Вопрос:
Шейдеры не могут считывать данные из фреймбуфера, они могут передавать данные только вперед по конвейеру рендеринга. Но для постобработки необходимо прочитать отрисованное изображение.
Я собираюсь решить эту проблему следующим образом: 1) создать текстуру размером с окно просмотра; 2) отрендерить изображение в текстуру обычным способом; 3) отрендерить текстуру в фреймбуфер, пропустив ее через шейдер постобработки.
Я все делаю правильно? Существуют ли более эффективные способы постобработки?
Комментарии:
1. Зависит от параметров, необходимых для постобработки. Вы хотите, чтобы все изображение было отрисовано для запуска постобработки?
2. Да, я делаю. Например, я хочу исказить конечное изображение, как если бы оно отражалось в кривом зеркале.
Ответ №1:
Это действительно обычный способ постобработки! Визуализируйте текстуру, привязав FBO для вашего первого прохода, затем используйте эту текстуру в качестве входных данных вашего шейдера постобработки после отмены привязки вашего FBO (т. Е. Возврата к буферу кадров по умолчанию).