Объект framebuffer инкапсулирует несколько других буферов, особенно те, которые неявно индексируются местоположением фрагмента. Таким образом, один объект кадрового буфера может связывать воедино буфер цвета, буфер глубины, буфер трафарета и множество других. Отдельные буферы известны как renderbuffers.
Ты прав - там нет геометрии. В целях считывания сцены вы получаете только окончательные значения фрагмента, которые, если вы используете хард-джек в существующем приложении, вероятно, будут 2-пиксельным изображением кадра и некоторыми другими вещами, которые вас не волнуют.
Если ваш GPU имеет поддержку рендеринга в текстуру (изначально расширение около OpenGL 1.3, но в настоящее время вам будет трудно найти GPU без него, даже в мобильных телефонах), тогда вы можете связать текстуру как буфер рендеринга в кадровый буфер. Таким образом, код рендеринга точно такой же, как обычно, но в итоге записывает результаты в текстуру, которую затем можно использовать в качестве источника для рисования.
Фрагментные шейдеры могут программно решать, какое расположение карты текстуры выбрать для создания выходных данных. Таким образом, вы можете написать фрагментный шейдер, который использует объектив «рыбий глаз», хотя вы, очевидно, ограничены полем зрения, отображаемым в исходной текстуре. Что, вероятно, будет тем, что вы получите в своем примере Quake, если у вас будет только одна из сторон куба, а не шесть.
Подводя итог: ответьте «да» на все ваши вопросы. Краткое введение в объекты кадрового буфера здесь .