Содержание
- opengl фреймбуферов
- Использование фреймбуфера
- История Фрейм Буффера V-Ray (Vray Frame Buffer History)
- Что такое UMA Frame Buffer Size в настройках BIOS?
- Управление памятью встроенной видеокарты
- (Unit 0) Intro 4: Frame Buffer
- ИМЕННОЙ FRAMEBUFFER ВИДЕОКАРТ В HACKINTOSH! ЧТО ЭТО? КАК ИСПОЛЬЗОВАТЬ? — ALEXEY BORONENKOV
- Что выбирать?
- Фреймбуфер
- История
- Виртуальные видеобуферы
- Переключение страниц
- Графические ускорители
- См. также
- Примечания
- Ссылки

Вы можете проверить, успешно ли создан и завершен фреймбуфер без каких-либо ошибок:
opengl
фреймбуферов
Framebuffer — это тип буфера, который хранит значения цвета , глубину и информацию о трафаретах пикселей в памяти. Когда вы рисуете что-то в OpenGL, вывод сохраняется в фреймбуфере по умолчанию, а затем вы фактически видите значения цвета этого буфера на экране. Вы также можете создать свой собственный фреймбуфер, который можно использовать для множества интересных эффектов пост-обработки, таких как серо-масштаб, размытие, глубина резкости, искажения, отражения .
Для начала вам нужно создать объект фреймбуфера ( FBO ) и связать его, как и любой другой объект в OpenGL:
unsigned int FBO; glGenFramebuffers(1, &FBO); glBindFramebuffer(GL_FRAMEBUFFER, FBO);
Теперь вам нужно добавить по крайней мере одно вложение (цвет, глубина или трафарет) в фреймбуфер. Вложение — это ячейка памяти, которая выступает в качестве буфера для фреймбуфера. Это может быть либо текстура , либо объект renderbuffer . Преимущество использования текстуры заключается в том, что вы можете легко использовать эту текстуру в пост-обрабатывающих шейдерах. Создание текстуры аналогично нормальной текстуре:
unsigned int texture; glGenTextures(1, &texture); glBindTexture(GL_TEXTURE_2D, texture); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
width и height должны быть такими же, как размер окна рендеринга. Указатель данных текстуры имеет NULL потому что вы хотите выделить память и не заполнить текстуру любыми данными. Текстура готова, поэтому вы можете привязать ее к фреймбуферу:
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
Теперь ваш фреймбуфер должен быть готов к использованию, но вы можете также добавить добавление глубины или вложения глубины и трафарета. Если вы хотите добавить их в качестве вложений текстуры (и использовать их для некоторой обработки), вы можете создать другие текстуры, например, выше. Единственное различие в этих строках:
glTexImage2D( GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, width, height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL ); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, texture, 0);
Или это, если вы хотите использовать глубину и трафаретную привязку в одной текстуре:
glTexImage2D( GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, width, height, 0, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, NULL ); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D, texture, 0);
Вы также можете использовать renderbuffer вместо текстуры в качестве вложения для буферов глубины и трафарета, если не хотите обрабатывать значения позже. (Это будет объяснено в другом примере . )
Вы можете проверить, успешно ли создан и завершен фреймбуфер без каких-либо ошибок:
if(glCheckFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE) // do something.
И, наконец, не забудьте отвязать фреймбуфер, чтобы вы не случайно его отбросили:
glBindFramebuffer(GL_FRAMEBUFFER, 0);
рамки
Максимальное количество цветовых буферов, которые могут быть присоединены к буму одного кадра, может быть определено функцией OGL glGetIntegerv , используя параметр GL_MAX_COLOR_ATTACHMENTS :
GLint maxColAttchments = 0; glGetIntegerv( GL_MAX_COLOR_ATTACHMENTS, &maxColAttchments );
Использование фреймбуфера
Использование довольно простое. Во-первых, вы привязываете фреймбуфер и визуализируете свою сцену. Но вы ничего не увидите, потому что ваш рендеринг не отображается. Итак, вторая часть — сделать ваш фреймбуфер как текстуру полноэкранного квадрата на экране. Вы можете просто визуализировать его так, как есть, или делать некоторые эффекты пост-обработки.
Вот вершины для полноэкранного квадранта:
float vertices[] = < // positions texture coordinates -1.0f, 1.0f, 0.0f, 1.0f, -1.0f, -1.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, 0.0f, -1.0f, 1.0f, 0.0f, 1.0f, 1.0f, -1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f >;
Вам нужно будет хранить их в VBO или рендеринг с помощью указателей атрибутов. Вам также понадобится базовая шейдерная программа для рендеринга полноэкранного квадроцикла с текстурой.
in vec2 position; in vec2 texCoords; out vec2 TexCoords; void main()
in vec2 TexCoords; out vec4 color; uniform sampler2D screenTexture; void main()
Примечание. Возможно, вам потребуется настроить шейдеры для вашей версии GLSL .
Теперь вы можете сделать фактический рендеринг. Как описано выше, первое, что нужно сделать, сделать сцену в вашем FBO. Для этого вы просто связываете свой FBO, очищаете и рисуете сцену:
glBindFramebuffer(GL_FRAMEBUFFER, FBO); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // draw your scene here.
Примечание. В функции glClear вы должны указать все вложения фреймбуфферов, которые вы используете (в этом примере вложение цвета и глубины).
Теперь вы можете отобразить свой FBO в полноэкранном квадранте по умолчанию для фреймбуфера, чтобы вы могли его видеть. Для этого вы просто отвязываете свой FBO и визуализируете квад:
glBindFramebuffer(GL_FRAMEBUFFER, 0); // unbind your FBO to set the default framebuffer glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); shader.Use(); // shader program for rendering the quad glBindTexture(GL_TEXTURE_2D, texture); // color attachment texture glBindBuffer(GL_ARRAY_BUFFER, VBO); // VBO of the quad // You can also use VAO or attribute pointers instead of only VBO. glDrawArrays(GL_TRIANGLES, 0, 6); glBindBuffer(GL_ARRAY_BUFFER, 0);
И это все! Если вы все сделали правильно, вы должны увидеть ту же сцену, что и раньше, но отображаться на полноэкранном квадранте. Визуальный вывод такой же, как и раньше, но теперь вы можете легко добавить эффекты пост-обработки, просто отредактировав шейдер фрагмента. (Я добавлю эффекты в другой пример (ы) и свяжу его здесь)
История Фрейм Буффера V-Ray (Vray Frame Buffer History)
Что такое UMA Frame Buffer Size в настройках BIOS?

В расширенных настройках BIOS современных компьютеров и ноутбуков очень часто можно встретить опцию с данным названием. Как правило, для нее доступно множество возможных значений, начиная от AUTO и заканчивая несколькими мегабайтами или гигабайтами. Что это за опция и для чего она нужна вы узнаете из данной статьи.

Управление памятью встроенной видеокарты
Сразу стоит отметить, что в зависимости от производителя и версии BIOS параметр “UMA Frame Buffer Size” может называться еще и вот так:
- Video Memory Size;
- On-Chip Frame Buffer Size.
(Unit 0) Intro 4: Frame Buffer
Более опытным пользователям наверняка известен тот факт, что встроенные в процессор видеочипы не имеют своей собственной видеопамяти. По этой причине они вынуждены брать ее в оперативной памяти компьютера. Именно поэтому нередко доступно меньше “оперативки”, чем физически установлено.

Так вот UMA Frame Buffer Size указывает какой именно объем будет зарезервирован в оперативной памяти для нужд встроенной видеокарты.
ИМЕННОЙ FRAMEBUFFER ВИДЕОКАРТ В HACKINTOSH! ЧТО ЭТО? КАК ИСПОЛЬЗОВАТЬ? — ALEXEY BORONENKOV
Значение “AUTO” автоматически выбирает этот объем в зависимости от общего размера ОЗУ.
Что выбирать?
Если в вашем ПК установлена дискретная видеокарта со своей собственной видеопамятью, то параметр UMA Frame Buffer Size нет смысла как – то менять или настраивать. Ведь при наличии полноценной видеокарты встроенная автоматически отключается.
Если же вы пользуетесь встроенной картой, как основной, то почти всегда оптимальным значением для параметра UMA Frame Buffer Size будет “AUTO” или то, которое было установлено по умолчанию.
В редких случаях его нужно увеличивать, а именно тогда, когда вы хотите выжать максимум быстродействия от своей встроенной видеокарты.
Лучшая благодарность автору — репост к себе на страничку:
Фреймбуфер

Кадровый буфер (англ. framebuffer ) (другие названия: буфер кадра, видеобуфер, фреймбуфер) — реальное или виртуальное электронное устройство, или область памяти для кратковременного хранения одного или нескольких кадров в цифровом виде перед его отправкой на устройство видеовывода. Буфер может быть использован для выполнения над кадром различных предварительных операций, организации стоп-кадра, устранения мерцания изображения и др. Обычно кадр хранится в виде последовательности цветовых значений каждого пиксела изображения. Цветовые значения чаще всего хранятся в следующих форматах: одноразрядный (монохромный; 1 бит), 4/8-битный (палитровый), 16-битный (High Color) и 24-битный (True Color); также может присутствовать альфа-канал. Размер памяти, необходимый для хранения одного кадра, зависит от разрешения и глубины цвета.
История
Виртуальные видеобуферы
Переключение страниц
Основная статья: Двойная буферизация
Графические ускорители
См. также
Примечания
- Alvy Ray SmithDigital Paint Systems: Historical Overview (PDF). Microsoft Tech Memo 14 (May 30 1997).
- Wayne CarlsonHardware advancements. A Critical History of Computer Graphics and Animation. The Ohio State University (2003).
- Alvy Ray SmithDigital Paint Systems: An Anecdotal and Historical Overview (PDF). IEEE Annals of the History of Computing (2001).
Ссылки
- Interview with NYIT researcher discussing the 24-bit system (англ.)
- Jim Kajiya — разработчик первого коммерческого видеобуфера (англ.)
- История видеобуферов Sun Microsystems (англ.)
- Драйвер виртуального видеобуфера для Linux (англ.)
- DirectFB — уровень абстракции для видеобуфера Linux (англ.)
Wikimedia Foundation . 2010 .
Полезное
Смотреть что такое «Фреймбуфер» в других словарях:
- SAM Coupé — Тип Домашний компьютер Выпущен 1989 … Википедия
- Linux framebuffer — Загрузка Knoppix в linux framebuffer Linux framebuffer (фреймбуфер Линукс, fbdev от англ. Linux Frame Buffer Device) это графический аппарат … Википедия
- Jazz (компьютер) — У этого термина существуют и другие значения, см. Jazz. Компьютерная платформа Jazz представляет собой проект системной платы и набора системной логики, разработанный компанией Microsoft для применения совместно с разрабатывавшейся Windows NT. В… … Википедия
- Кадровый буфер — Аппаратный видеобуфер Sun cgsix Кадровый буфер (англ. framebuffer) (другие названия: буфер кадр … Википедия
- Voodoo2 — В этой статье не хватает ссылок на источники информации. Информац … Википедия
- Отложенное освещение и затенение — Отложенное освещение и затенение, отложенный рендеринг (англ. deferred shading) программная техника (методика) в трёхмерной компьютерной графике, которая обрабатывает освещение и затенение визуальной сцены. В результате работы алгоритма… … Википедия
- Буфер кадра — Аппаратный видеобуфер Sun cgsix Кадровый буфер (англ. framebuffer) (другие названия: буфер кадра, видеобуфер, фреймбуфер) реальное или виртуальное электронное устройство, или область памяти для кратковременного хранения одного или нескольких… … Википедия
- Видеобуфер — Аппаратный видеобуфер Sun cgsix Кадровый буфер (англ. framebuffer) (другие названия: буфер кадра, видеобуфер, фреймбуфер) реальное или виртуальное электронное устройство, или область памяти для кратковременного хранения одного или нескольких… … Википедия
- SPARCstation 10 — (кодовое имя Campus 2 ) рабочая станция, производимая корпорацией Sun Microsystems с мая 1992. Она была первым настольным многопроцессорным компьютером от Sun. Позже она была заменена на SPARCstation 20. Содержание 1 Особенности 1.1 Процессоры … Википедия
- SPARCstation LX — рабочая станция семейства SPARCstation от Sun Microsystems на основе архитектуры sun4m. Содержание 1 Спецификация 1.1 Процессор 1.2 Память … Википедия
- Обратная связь: Техподдержка, Реклама на сайте
- Путешествия
Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.
- Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
- Искать во всех словарях
- Искать в переводах
- Искать в ИнтернетеИскать в этой же категории
Поделиться ссылкой на выделенное
Прямая ссылка:
… Нажмите правой клавишей мыши и выберите «Копировать ссылку»