Получение данных FBO в GLSL

Я пытаюсь заставить MRT работать в OpenGL, чтобы опробовать отложенный рендеринг. Вот такая ситуация, как я понимаю.

  1. Создайте 3 буфера рендеринга (например). Два RGBA8 и один Depth32.
  2. Создайте FBO.
  3. Присоедините буферы рендеринга к FBO. ColorAttachment0 / 1 для буферов цвета, DepthAttachment для буфера глубины.
  4. Свяжите FBO.
  5. Нарисуйте геометрию.
  6. Отправляйте данные в разные вложения, используя gl_FragData[] в шейдере фрагментов.

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


person Tom Savage    schedule 06.06.2010    source источник


Ответы (1)


Что вы используете в качестве вложений FBO? Рендербуферы? Текстуры?

Вы должны использовать текстуры в качестве вложений цвета (и вложений глубины), чтобы вы могли прочитать их на следующем этапе. Невозможно сделать то же самое с буфером рендеринга.

person Dr. Snoopy    schedule 06.06.2010
comment
Я использовал рендербуферы (см. Вопрос №3), поскольку я никогда не собирался использовать сгенерированные изображения в качестве текстурных карт для геометрии. Полагаю, мне было бы лучше вместо этого использовать текстуры в качестве вложений и сопоставить их с выровненным по экрану четырехугольником во втором проходе? - person Tom Savage; 07.06.2010
comment
Да, именно текстуры - это то, что нужно. - person Dr. Snoopy; 07.06.2010