Архитектура объекта буфера кадра (FBO) является расширением OpenGL для выполнения гибкого внеэкранного рендеринга, включая рендеринг в текстуру . Захватывая изображения, которые обычно рисуются на экране, его можно использовать для реализации большого количества фильтров изображений и эффектов постобработки. FBO аналогичен модели целей рендеринга в DirectX . Он используется в OpenGL из-за своей эффективности и простоты использования. Использование FBO не страдает от накладных расходов, связанных с переключением контекста рисования OpenGL, и в значительной степени вытеснило pbuffer и другие методы, включающие переключение контекста.
Использует
FBO имеет два основных применения: Постобработка визуализированных изображений и композиция между различными сценами. Вот несколько примеров:
- Отрендеренное изображение захватывается и подвергается фрагментным шейдерам или другим манипуляциям. Это позволяет реализовать многие популярные сегодня эффекты компьютерной графики, включая добавление эффекта размытия или свечения.
- Может использоваться для создания видов других сцен, например: телевизор в доме, показывающий вид со вторичной камеры. Сцена может быть визуализирована через FBO в текстуру, затем эта текстура может быть применена к поверхности телевизора. Иногда это называется «визуализация в текстуру» или RTT.
Преимущества перед другими методами
Методы, включающие FBO, считаются более эффективными, поскольку:
- Его проще настроить, чем большинство других методов.
- Не требует переключения контекста.
- Более эффективно, поскольку ресурсы используются совместно в одном контексте.
- Более гибкий, поскольку можно получить все буферы глубины , буферы трафарета и т. д.
Архитектура
Чтобы использовать FBO, нужно просто создать его экземпляр. Вместе с FBO идут несколько вложений. Затем их можно прикрепить к выбранному приемнику: либо текстуре , либо буферу рендеринга.
Например:
- Создайте FBO и привяжите его.
- Присоедините цветовой буфер (как RenderBuffer или текстуру) к FBO.
- Присоедините буфер глубины (как RenderBuffer или текстуру) к FBO.
- Привязать собственное окно FrameBuffer (id=0)
- Вывести текстуру на экран с помощью пиксельного шейдера, в зависимости от информации о цвете и информации о глубине.
Внешние ссылки
- Техническая статья по объекту буфера кадров. Архивировано 2013-05-02 на Wayback Machine.
- Ссылка на объект буфера кадра в openvidia
- Пример кода для Windows и Linux
- EXT кадровый буфер (opengl.org)