2013-02-26 65 views
1

目前我通過他們的ID和渲染目標的數量來存儲幀緩衝區。但是爲了繪製幀緩衝區,我需要使用glDrawBuffers來設置正確的繪製緩衝區。現在我這樣做。如何獲取附加到幀緩衝區的紋理?

vector<GLenum> buffers; 
for(int i = 0; i < targets; ++i) 
{ 
    buffers.push_back(GL_COLOR_ATTACHMENT0 + i); 
} 
glDrawBuffers(targets, &buffers[0]); 

爲了簡單起見,我不想再存儲渲染目標的數量了。無論如何,我猜OpenGL是這樣做的。有沒有辦法獲取綁定到幀緩衝區的顏色附件,例如使用glFramebufferTexture2D打電話?

回答

3

繪製緩衝區位置是FBO的狀態的一部分。如果您沒有更改它們,則只需在初始化時設置它們一次,其中目標的數量應該是衆所周知的。

但是,如果您堅持查詢附件,您可以use glGetFramebufferAttachmentParameterGL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE​。如果返回的值是GL_NONE,那麼該綁定點沒有附件。

+0

謝謝,我將在初始化時設置它們。很高興知道你甚至可以查詢它們。 – danijar 2013-02-26 13:33:56

+2

@sharethis:你可以在OpenGL中查詢* everything *。 – 2013-02-26 13:34:15

相關問題