GLSL Renderbuffer действительно требуется? - PullRequest
9 голосов
/ 24 марта 2012

Я пытаюсь написать программу, которая записывает кадры видеокамеры в квад. Я видел учебники, объясняющие, что с кадровыми буферами можно работать быстрее, но я все еще учусь, как это делать. Но потом, кроме кадрового буфера, я обнаружил, что есть и буфер рендеринга.

Вопрос в том, что если цель состоит только в том, чтобы записать текстуру в квад, который заполнит экран, нужен ли мне рендер-буфер?

Я понимаю, что рендер-буферы предназначены для глубинного тестирования, которое, я думаю, предназначено только для проверки положения Z пикселя, поэтому было бы глупо создавать буфер рендеринга для моего сценария, верно?

1 Ответ

10 голосов
/ 24 марта 2012

A объект framebuffer - это место для прикрепления изображений, чтобы вы могли их рендерить.Цветовые буферы, буферы глубины и т. Д. Все входят в объект кадрового буфера.

A renderbuffer похож на текстуру, но с двумя важными отличиями:

  1. Это всегда 2D и не имеет мипмапов.Так что это всегда ровно 1 изображение.
  2. Вы не можете читать из рендербуфера.Вы можете прикрепить их к FBO и выполнить рендеринг, но вы не можете сэмплировать их с помощью доступа к текстуре или чего-то в этом роде.

Итак, вы говорите о двух в основном отдельных концепциях.Рендербуферы не имеют для «проверки глубины».Это распространенный случай использования буферов рендеринга, потому что, если вы рендерите цвета в текстуру, вам обычно наплевать на глубину.Вы нуждаетесь в глубине, потому что вам нужно тестирование глубины для удаления скрытой поверхности.Но вам не нужно семплировать с этой глубины.Таким образом, вместо создания текстуры глубины, вы создаете рендер-буфер глубины.

Но рендер-буферы также могут использовать цвета, а не форматы глубины.Вы просто не можете прикрепить их как текстуры.Вы по-прежнему можете копировать их из / в них и читать их обратно glReadPixels.Вы просто не можете читать их в шейдере.

Как ни странно, это ничего не дает для ответа на ваш вопрос:

Вопрос в том, если цель состоит только в том, чтобы написатьтекстуры в квад, который будет заполнять экран, мне действительно нужен рендер-буфер?

Я не понимаю, зачем вам нужен кадровый буфер или рендер-буфер любого рода.Текстура - это текстура;просто нарисуйте текстурированный квад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...