2016-03-07 1 views
1

Comment puis-je obtenir le nombre de pièces jointes en couleur pour lier FBO? J'ai vérifié glGetInteger et glGetFramebufferAttachmentParameteriv mais ils n'ont pas enum pour obtenir ces valeurs.Comment récupérer le nombre de pièces jointes à FBO

+0

... Vous ne connaissez pas? Je veux dire, c'est * votre * FBO, n'est-ce pas? –

+0

@NicolBolas J'utilise une bibliothèque externe qui a la configuration. – debonair

Répondre

4

Untested, mais cela devrait le faire:

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. 

Vous pouvez faire quelque chose de similaire à l'aide GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME au lieu de GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, et en comparant la valeur à 0.