Какова концепция и различия между Framebuffer и Renderbuffer в OpenGL?

Я запутался в концепции Framebuffer и Renderbuffer. Я знаю, что они должны визуализировать, но я хочу понять их перед использованием.

Я знаю, что для хранения временного результата рисования требуется бит битмапа. Обратный буфер. И другой буфер необходимо увидеть на экране, когда эти чертежи находятся в процессе. Передний буфер. И переверните их, и снова нарисуйте. Я знаю эту концепцию, но трудно подключить эти объекты к этой концепции.

Какое понятие и различия в них?

97
06 февр. '10 в 15:14
источник поделиться
2 ответов

На этой странице есть некоторые детали, которые, я думаю, объясняют разницу довольно хорошо. Во-первых:

Конечный пункт рендеринга конвейера OpenGL называется [] фреймбуфером.

В то время как:

Объект Renderbuffer
Кроме того, объект renderbuffer вновь вводится для внеэкранного рендеринга. Он позволяет визуализировать сцену непосредственно объекту renderbuffer, а не визуализировать объект текстуры. Renderbuffer - это просто объект хранения данных, содержащий одно изображение визуализируемого внутреннего формата. Он используется для хранения логических буферов OpenGL, у которых нет соответствующего формата текстуры, например, трафарета или буфера глубины.

48
06 февр. '10 в 15:33
источник

Объект Framebuffer фактически не является буфером, а объектом агрегатора, который содержит одно или несколько вложений, которые по очереди являются фактическими буферами. Вы можете понять Framebuffer как структуру C, где каждый элемент является указателем на буфер. Без привязки объект Framebuffer имеет очень низкий размер.

Теперь каждый буфер, прикрепленный к Framebuffer, может быть Renderbuffer или текстурой.

Renderbuffer - это фактический буфер (массив байтов или целых чисел или пикселей). Renderbuffer сохраняет значения пикселей в собственном формате, поэтому оптимизируется для внеэкранного рендеринга. Другими словами, рисование на Renderbuffer может быть намного быстрее, чем рисование текстуры. Недостатком является то, что пиксели используют собственный, зависящий от реализации формат, так что чтение из Renderbuffer намного сложнее, чем чтение из текстуры. Тем не менее, как только a Renderbuffer был нарисован, можно скопировать его содержимое непосредственно на экран (или на другой Renderbuffer, я думаю), очень быстро используя операции переноса пикселей. Это означает, что Renderbuffer может использоваться для эффективного использования шаблона двойного буфера, который вы упомянули.

Renderbuffers - относительно новая концепция. Перед ними использовался Framebuffer для рендеринга текстуры, который может быть медленнее, потому что текстура использует стандартный формат. По-прежнему можно сделать текстуру, и это очень полезно, когда нужно выполнить несколько проходов над каждым пикселем для создания сцены или рисовать сцену на поверхности другой сцены!

В викирете OpenGL this page, которая показывает более подробную информацию и ссылки.

138
18 нояб. '12 в 21:29
источник

Посмотрите другие вопросы по меткам или Задайте вопрос