Framebuffer Object
Frame buffer object (FBO) — расширение архитектуры OpenGL для гибкой закадровой отрисовки, включая отрисовку в текстуру. Замена цели вывода с экранного буфера на FBO, может быть использована для применения всевозможных фильтров и эффектов пост-обработки. Это аналог render targets model в DirectX. Оно используется в OpenGL для большей эффективности и простоты использования. FBO не требует создания и переключения контекстов отрисовки, которые зависят от платформы, а также это более быстрая операция по времени, по сравнению с pbuffer[1].
Использование
Оно имеет два основных направления использования: пост-обработка полученного изображения и объединение различных сцен. К примеру:
- Отрисованное изображение захватывается и передается на обработку к фрагментным шейдерам или подвергается другим манипуляциям. Это позволяет осуществлять множество популярных сейчас графических эффектов, включая размытие и bloom.
- Может использоваться для просмотра других сцен. К примеру, телевизор в доме показывает вид из второй камеры. Сцена в телевизоре может быть выведена через FBO в текстуру, которая потом будет наложена на поверхность телевизора. Это называется отрисовкой в текстуру (Render to Texture, RTT)[1].
Преимущества по сравнению с другими методами
- Проще, чем остальные методы.
- Не требует смены контекстов.
- Более эффективный, потому что все ресурсы находятся в том же контексте.
- Более гибкий, так как буферы глубины, трафарета и прочие могут быть подключены.
Архитектура
Для использования FBO, создается его экземпляр. После этого идет несколько подключений, одно из них это выбор получателя, либо текстуры, либо render buffer.
Пример:
- Создаётся FBO.
- Подключается буфер цвета к текстуре.
- Подключается буфер глубины к текстуре.
- Визуализация текстуры на экран с помощью фрагментного шейдера, в зависимости от информации в цвета и глубины.
Примечания
- ↑ 1 2 Боресков, 2006.
Литература
- Боресков Алексей. Разработка и отладка шейдеров. — БХВ-Петербург, 2006. — 488 с. — ISBN 5-94157-712-5.
Ссылки
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.