Объект буфера кадра

Архитектура объекта буфера кадра (FBO) является расширением OpenGL для выполнения гибкого внеэкранного рендеринга, включая рендеринг в текстуру . Захватывая изображения, которые обычно рисуются на экране, его можно использовать для реализации большого количества фильтров изображений и эффектов постобработки. FBO аналогичен модели целей рендеринга в DirectX . Он используется в OpenGL из-за своей эффективности и простоты использования. Использование FBO не страдает от накладных расходов, связанных с переключением контекста рисования OpenGL, и в значительной степени вытеснило pbuffer и другие методы, включающие переключение контекста.

Использует

FBO имеет два основных применения: Постобработка визуализированных изображений и композиция между различными сценами. Вот несколько примеров:

  1. Отрендеренное изображение захватывается и подвергается фрагментным шейдерам или другим манипуляциям. Это позволяет реализовать многие популярные сегодня эффекты компьютерной графики, включая добавление эффекта размытия или свечения.
  2. Может использоваться для создания видов других сцен, например: телевизор в доме, показывающий вид со вторичной камеры. Сцена может быть визуализирована через FBO в текстуру, затем эта текстура может быть применена к поверхности телевизора. Иногда это называется «визуализация в текстуру» или RTT.

Преимущества перед другими методами

Методы, включающие FBO, считаются более эффективными, поскольку:

  • Его проще настроить, чем большинство других методов.
  • Не требует переключения контекста.
  • Более эффективно, поскольку ресурсы используются совместно в одном контексте.
  • Более гибкий, поскольку можно получить все буферы глубины , буферы трафарета и т. д.

Архитектура

Чтобы использовать FBO, нужно просто создать его экземпляр. Вместе с FBO идут несколько вложений. Затем их можно прикрепить к выбранному приемнику: либо текстуре , либо буферу рендеринга.

Например:

  • Создайте FBO и привяжите его.
  • Присоедините цветовой буфер (как RenderBuffer или текстуру) к FBO.
  • Присоедините буфер глубины (как RenderBuffer или текстуру) к FBO.
  • Привязать собственное окно FrameBuffer (id=0)
  • Вывести текстуру на экран с помощью пиксельного шейдера, в зависимости от информации о цвете и информации о глубине.
  • Техническая статья по объекту буфера кадров. Архивировано 2013-05-02 на Wayback Machine.
  • Ссылка на объект буфера кадра в openvidia
  • Пример кода для Windows и Linux
  • EXT кадровый буфер (opengl.org)
Получено с "https://en.wikipedia.org/w/index.php?title=Framebuffer_object&oldid=1124064121"