Об'єкт Framebuffer - це насправді не буфер, а об’єкт агрегатора, який містить одне або більше вкладень, які, своєю чергою, є власне буферами. Ви можете зрозуміти структуру Framebuffer як структуру C, де кожен член - вказівник на буфер. Без будь-якого вкладення об'єкт Framebuffer має дуже низький слід.
Тепер кожен буфер, приєднаний до Framebuffer, може бути рендербуфером або текстурою .
Renderbuffer є фактичним буфер (масив байтів, або цілих, або пікселів). У Renderbuffer зберігає значення пікселів у вихідному форматі, тому він оптимізований для закадрового рендеринга. Іншими словами, малюнок до Renderbuffer може бути набагато швидшим, ніж малюнок до текстури. Недолік полягає в тому, що пікселі використовують власний формат, залежний від реалізації, так що читати з Renderbuffer набагато важче, ніж читати з текстури. Тим не менш, після того як Renderbuffer намальовано, ви можете скопіювати його вміст безпосередньо на екран (або, напевне , на інший Renderbuffer ), дуже швидко, використовуючи операції передачі пікселів. Це означає, що Renderbuffer можна використовувати для ефективної реалізації подвійного буфера, який ви згадали.
Рендербуфери - відносно нова концепція. Перед ними використовувався Framebuffer, щоб надати текстуру , яка може бути повільнішою, оскільки текстура використовує стандартний формат. Ще можна надати текстуру, і це досить корисно, коли потрібно створити кілька проходів над кожним пікселем, щоб створити сцену або намалювати сцену на поверхні іншої сцени!
У вікі OpenGL є ця сторінка, на якій показано більше деталей та посилань.