2013-07-17 14 views
8

在OpenGL文檔中,我無法找到任何地方。對不起,如果它已經回答過。但我的問題是,如果我將像素從一個FBO複製到另一個,並且每個都有多個顏色附件(不需要相同數量),並且如果我的遮罩是GL_COLOR_BUFFER_BIT,哪些顏色附件(GL_COLOR_ATTACHMENT0,GL_COLOR_ATTACHMENT1,.... GL_COLOR_ATTACHMENTN)是否複製?他們全部?如果是的話,如果這些FBO有不同數量的顏色緩衝區連接到它們呢?如果指定了GL_COLOR_BUFFER_BIT掩碼,glBlitFramebuffer會複製所有顏色附件

假設有2個宗教組織是在這樣的約束:

glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo1); 
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo2); 

注意fbo1有2個顏色附件和fbo2有4名顏色的附件。

那麼在這種情況下,glBlitFrameBuffer blit顏色附件如何?

回答

13

一個framebuffer color blitting operationcurrent glReadBufferGL_READ_FRAMEBUFFER讀,它會the glDrawBuffersGL_DRAW_FRAMEBUFFER規定。所以這不是關於附件;它關於兩個幀緩衝區的讀取和繪製緩衝區。

+1

謝謝Nicol。我意識到這一點。我的問題仍然成立。爲了使問題更加清晰起見,這裏有以這種方式綁定的2個宗教組織: \t ** glBindFramebuffer(GL_READ_FRAMEBUFFER,fbo1); ** \t ** glBindFramebuffer(GL_DRAW_FRAMEBUFFER,fbo2); ** fbo1有2種顏色附件,fbo2有4種顏色附件。那麼在這種情況下,glBlitFrameBuffer如何複製顏色附件? – viktorzeid

+4

@kvikram:「*我知道這一點。*」不,你不是,你還沒有。你未能掌握的是「當前glReadBuffer」和「綁定到GL_READ_FRAMEBUFFER的* framebuffer *」之間的區別。正如我所說,這不是關於*附件*;它關於幀緩衝區內的讀取和繪製緩衝區*。 –

+3

謝謝Nicol。我想你清除了我的理解。 第一步是選擇讀取/繪製的FBO: \t glBindFramebuffer(GL_READ_FRAMEBUFFER,fbo1); \t glBindFramebuffer(GL_DRAW_FRAMEBUFFER,fbo2); ,然後明確提及用於讀取/繪製的顏色緩衝區glReadBuffer(GL_COLOR_ATTACHMENT0); glDrawBuffer(GL_COLOR_ATTACHMENT3); 然後做blit操作:\t glBlitFramebuffer ..? 這將從fbo1複製顏色附件0中的緩衝區到fbo2中的顏色附件3中的緩衝區? – viktorzeid

相關問題