Je configure un framebuffer multi-échantillonné avec 4 attachements de couleur et 1 attachement de stencil de profondeur. Il est actuellement incomplet avec GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE. Si je n'attache pas le rendu, cela fonctionne parfaitement. La sortie de débogage n'imprime rien, et glGetError() ne montre aucun problème.Mémoire de trame multi-échantillon uniquement incomplète avec renderbuffer
GLint samples;
glGetIntegerv(GL_MAX_SAMPLES, &samples);
const GLuint target = GL_TEXTURE_2D_MULTISAMPLE;
const GLenum format[TEXTURES_PER_FBO] = {
GL_RGBA32F, GL_RGB32F, GL_RGB32F, GL_R8UI // TODO tune these
};
// create render textures
glGenTextures(NUM_TEXTURES, textures);
for (int i = 0; i < NUM_TEXTURES; i++) {
glActiveTexture(GL_TEXTURE0 + i);
glBindTexture(target, textures[i]);
const int index = i % TEXTURES_PER_FBO;
glTexStorage2DMultisample(target, samples, format[index], width, height, false);
}
glGenRenderbuffers(1, &depth);
glBindRenderbuffer(GL_RENDERBUFFER, depth);
glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, GL_DEPTH24_STENCIL8, width, height);
// create first framebuffer with depth attachment
glGenFramebuffers(NUM_FBOS, fbos);
glBindFramebuffer(GL_FRAMEBUFFER, fbos[0]);
for (int i = 0; i < TEXTURES_PER_FBO; i++) {
const GLenum index = GL_COLOR_ATTACHMENT0 + i;
glFramebufferTexture2D(GL_FRAMEBUFFER, index, target, textures[i], 0);
}
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, depth);
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
'statut' est GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE
Je l'ai testé à la fois une gtx 980 et 480 sur les fenêtres. Je n'ai pas accès aux autres pour le moment, mais je vais essayer d'en avoir si ce n'est pas résolu. Si vous avez besoin de plus de code pour votre contexte, celui-ci peut être trouvé here Merci!