2016-03-07 46 views
1

如何获取当前绑定FBO的颜色附件数量?我检查了glGetIntegerglGetFramebufferAttachmentParameteriv,但他们没有获得这些值的枚举。如何检索FBO的附件数量

+0

...你不知道吗?我的意思是,它是*你的* FBO,不是吗? –

+0

@NicolBolas我正在使用已设置的外部库。 – debonair

回答

4

未经检验的,但是这应该这样做:

GLint maxAtt = 0; 
glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &maxAtt); 
int nAtt = 0; 
for (int iAtt = 0; iAtt < maxAtt; ++iAtt) { 
    GLint objType = GL_NONE; 
    glGetFramebufferAttachmentParameteriv(
     GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + iAtt, 
     GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &objType); 
    if (objType != GL_NONE) { 
     ++nAtt; 
    } 
} 
// nAtt is the number of color attachments. 

你可以做同样的使用GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME代替GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,和值与0东西。