Быстрая замена фреймбуферов OpenGL

Недавно я прочитал, что простое переключение целей рендеринга объекта фреймбуфера происходит намного быстрее, чем переключение объекта фреймбуфера.

Как бы экстремально это ни звучало, означает ли это, что я должен использовать только один объект фреймбуфера и переключать только его цели?

РЕДАКТИРОВАТЬ: я изменил «обмен» на «переключение», чтобы избежать путаницы. Под переключением я подразумеваю привязку нового фреймбуфера вместо старого. Не путать с вызовом SwapBuffers(), используемым для замены переднего и заднего буферов.


person Hannesh    schedule 22.05.2011    source источник
comment
Где ты это прочитал? Замена фреймбуфера не займет много времени, если только у вас нет ошибки в драйвере.   -  person Gunther Piez    schedule 22.05.2011
comment
songho.ca/opengl/gl_fbo.html последний абзац раздела обзора.   -  person Hannesh    schedule 22.05.2011
comment
Буфер кадра отличается от объекта буфера кадра. В статье говорится о ФБО.   -  person Gunther Piez    schedule 22.05.2011
comment
У меня сложилось впечатление, что они оба означают одно и то же. OpenGL официально называет их объектами кадрового буфера, и я не смог найти ничего в спецификациях о «фреймбуфере».   -  person Hannesh    schedule 22.05.2011
comment
В начале статьи объясняются различия.   -  person Gunther Piez    schedule 22.05.2011
comment
Хотя я не вижу разницы, думаю, я использую FBO. Итак, вернемся к моему первоначальному вопросу, должен ли я когда-либо использовать только один FBO и переключать только его цели?   -  person Hannesh    schedule 22.05.2011


Ответы (1)


РЕДАКТИРОВАТЬ: этот ответ, вероятно, неверен. Прочитайте комментарии ниже.

Переключение текстур, подключаемых к буферу кадра, выполняется быстрее, чем переключение между буферами кадра (FBO). Подробнее здесь http://www.songho.ca/opengl/gl_fbo.html

Однако существуют ограничения на количество вложений, которые может иметь FBO.

person matejd    schedule 20.07.2011
comment
Ах, значит, вы переключались между текстурами, которые уже прикреплены к этому фреймбуферу? - person Hannesh; 22.07.2011
comment
@Hannesh Да, это, по сути, то, что рекомендует статья. Однако не проводил обширных испытаний. - person matejd; 25.07.2011
comment
Очень интересно, сколько прямо противоречивой информации в интернете. Еще один SO answer описывает полная противоположность действительности. - person Ancurio; 24.06.2013
comment
Это кажется недоказанным. связанная статья не содержит примеров времени и не объясняет, почему это может быть так. Эффективно написав драйвер OpenGL, я могу сказать вам, что переключение между фреймбуферами должно быть быстрее, чем переключение вложений. Причина в том, что фреймбуфер работает только complete, если весь набор критериев верен. Каждый раз, когда вы меняете вложение, необходимо проверять все эти критерии. С другой стороны, фреймбуфер, который уже был проверен, не нуждается в повторной проверке. Кадровые буферы переключения QED должны работать быстрее. - person gman; 27.01.2014
comment
Что сказал Гман. Судя по выступлениям Valve по OpenGL и выступлениям Джона Макдональда и Касса Эверитта (не помню, оба упоминали об этом или только один), проверка FBO может занять много времени, тогда как переключение уже предварительно проверенных FBO обходится дешевле. - person TheStack; 02.06.2014