Рендеринг фрагментного шейдера в буфер кадров за кадром
-
18-09-2019 - |
Вопрос
В приложении на основе Qt я хочу выполнить шейдер фрагментов на двух текстурах (обе размером 1000x1000 пикселей).
Я рисую прямоугольник, и шейдер фрагментов работает нормально.
Но теперь я хочу визуализировать выходные данные в GL_AUX0 ( ГЛ_АУКС0 ) буфер кадра, позволяющий считывать результат обратно и сохранить в файл.
К сожалению, если размер окна составляет менее 1000x1000 пикселей выходные данные неверны.Только область размера окна отображается в буфере фрейма.
Как я могу выполнить буфер кадров для всей текстуры?
Решение
Рекомендуемый способ выполнения закадровой обработки - использовать объекты фреймбуфера (FBO).Эти буферы действуют аналогично буферам рендеринга, которые вы уже знаете, но не ограничены разрешением окна или глубиной цвета.Вы можете использовать Класс объекта Фреймбуфера GPGPU чтобы скрыть низкоуровневые команды OpenGL и сразу использовать FBO.Если вы предпочитаете делать это самостоятельно, взгляните на спецификация расширения.