Создание нескольких текстур одновременно с помощью glBlitFramebuffer

У меня есть небольшое приложение OpenGL, и я ищу оптимальный способ одновременного копирования нескольких текстурных буферов.

Допустим, у меня есть два буфера кадра (fbo1, fbo2), каждый из которых содержит два буфера текстуры. И у меня есть целевой fbo (fbo3) с четырьмя буферами текстур. И я хочу блит все текстуры от fbo1 и fbo2 до fbo3.

В настоящее время я делаю это отдельно для каждой текстуры, например,

glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo1)
glReadBuffer(GL_COLOR_ATTACHMENT0)
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo3)
glDrawBuffer(GL_COLOR_ATTACHMENT0)

glBlitFramebuffer(0, 0, width, height, 0, 0, ds_width, ds_height, GL_COLOR_BUFFER_BIT, GL_LINEAR)

glBindFramebuffer(GL_READ_FRAMEBUFFER, 0)
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0)

Как это обычно делается? И это вообще выполнимо?


person user3051029    schedule 30.01.2019    source источник


Ответы (1)


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

Единственный способ сделать это - так, как вы это сделали здесь (хотя ненужное повторное связывание фреймбуферов может исчезнуть): каждый раз менять буферы чтения / отрисовки и блит.

person Nicol Bolas    schedule 30.01.2019