Как применить обработку изображений к OpenGL? - PullRequest
4 голосов
/ 13 февраля 2010

Извините, если вопрос слишком общий, но я имею в виду следующее; в OpenGL, прежде чем выполнить замену буфера, чтобы сделать буфер видимым на экране, должны быть некоторые вызовы функций, чтобы выполнить некоторую обработку изображения. Я имею в виду, как размытие экрана, скручивание части экрана и т. Д. Или выполнение некоторого интересного «подкрашивания», такого как цветение и т. Д.

Какие ключевые слова и наборы функций OpenGL мне следует искать, если я хочу сделать то, что я сказал выше?

1 Ответ

5 голосов
/ 13 февраля 2010

Поскольку вы не можете, как правило, читать / записывать в кадровый буфер в одной и той же операции (кроме простого смешивания), вам необходимо выполнить рендеринг в текстуры с использованием FBO: s (FrameBufferObject), а затем выполнить различную обработку для них, затем сделайте последний проход на настоящий кадровый буфер.

Это основная часть, которую вам нужно понять. Учитывая это, вы можете нарисовать свое «дерево рендеринга» на бумаге, то есть, какие части сцены идут, где и каковы ваши эффекты, их входные и выходные данные.

С этого момента вы просто визуализируете один или несколько больших квадов, покрывающих весь экран, с помощью специального фрагментного шейдера, который выполняет ваш эффект, используя текстуры в качестве входных данных и один или несколько объектов кадрового буфера в качестве выходных.

...