Framebuffer / Color Buffer? - PullRequest
       19

Framebuffer / Color Buffer?

3 голосов
/ 04 ноября 2011

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

«Сам буфер цвета может состоять из нескольких подпуфферов. Кадровый буфер в системе содержит все эти буферы» здесь

Является ли кадровый буфер виртуальным буфером, состоящим из всех актуальных буферов ? (Таких как глубина / трафарет и т. Д.)

Ответы [ 2 ]

7 голосов
/ 04 ноября 2011

Framebuffer содержит (часто) буферы глубины, трафарета, цвета и накопления.Цветовые буферы являются наиболее важной частью, но они являются только одной частью.Вы можете создавать больше цветовых буферов, а также создавать больше кадровых буферов в OpenGL.

Когда вы говорите «виртуальный кадровый буфер», это иногда означает кадровый буфер, который не отображается на экране (например, записывается на дискили используется в качестве текстуры).Я считаю, что эта терминология относится только к X11, а не к OpenGL.

6 голосов
/ 04 ноября 2011

Если вы действительно хотите это сделать, взгляните на OpenGL Framebuffer Objects .FBOs являются "закадровыми" целями рендеринга.Все это означает, что вместо того, чтобы ваша картинка появлялась на вашем дисплее, вы рендерили ее в другое место - FBO.Прежде чем вы сможете сделать это, вы должны создать и настроить FBO.Частью этой конфигурации является добавление цветового вложения - буфера для хранения информации цвета каждого пикселя отрендеренного изображения.Может быть, вы остановились на этом, или, может быть, вы также добавили вложение глубины.Если вы визуализируете трехмерную геометрию и хотите, чтобы она выглядела правильно, у вас, скорее всего, будет , чтобы добавить это вложение глубины.

На самом деле это хороший эксперимент.Напишите небольшую программу OpenGL, которая отображает на экране простой 3D-куб.После того, как у вас это получится, измените ваше назначение рендеринга на FBO, которое вы настроите с только цветным вложением.Вероятно, это будет выглядеть не совсем правильно, поскольку в OpenGL нет места для хранения информации о глубине во время рендеринга.Boom!Все получает одинаковую глубину.Теперь добавьте привязку глубины к своему FBO и посмотрите, как меняется рендеринг.

Как только вы считаете, что кадровый буфер экрана является по умолчанию FBO с начальной настройкой, становится ясно, что кадровый буфер состоит изнесколько буферов.

...