J'essaie de rendre une scène 3D à un multi-échantillon FBO. Je création avec le code suivant OIR OIR:Multi-échantillonnage OpenGL FBO
GLuint fbo, vtex, depthbuffer;
glGenTextures(1, &vtex); GLCHECK();
glBindTexture(vtarget, vtex); GLCHECK();
glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, samples /*=4*/, GL_RGBA, width, height, false); GLCHECK();
glBindTexture(vtarget, 0); GLCHECK();
glGenRenderbuffers(1, &depthbuffer); GLCHECK();
glBindRenderbuffer(GL_RENDERBUFFER, depthbuffer); GLCHECK();
glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples/*=4*/, GL_DEPTH_COMPONENT32, width, height); GLCHECK();
glBindRenderbuffer(GL_RENDERBUFFER, 0); GLCHECK();
glGenFramebuffers(1, &fbo);GLCHECK();
glBindFramebuffer(GL_FRAMEBUFFER, fbo);GLCHECK();
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthbuffer); GLCHECK();
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, vtex, 0); GLCHECK();
if ((status = glCheckFramebufferStatus(GL_FRAMEBUFFER)) != GL_FRAMEBUFFER_COMPLETE)
{
fprintf(stderr, "Can't allocate frame buffer! Status: 0x%x\n", status);
assert(0);
}
glBindFramebuffer(GL_FRAMEBUFFER, 0); GLCHECK();
et je reçois GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE d'erreur. Qu'est-ce que je fais mal?
A avoir lu this rubrique, documentation FBO, mais cela n'aide pas.
Je peux créer un FBO sans accessoire de profondeur. Mais dans ce cas, il ne fonctionne pas lorsque j'essaie de le bilt à l'écran:
glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo); GLCHECK();
glReadBuffer(GL_COLOR_ATTACHMENT0);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); GLCHECK();
glDrawBuffer(GL_BACK); GLCHECK();
glBlitFramebuffer(0, 0, resolution.width, resolution.height, 0, 0, resolution.width, resolution.height, GL_COLOR_BUFFER_BIT, GL_NEAREST); GLCHECK();
glBindFramebuffer(GL_FRAMEBUFFER, 0);
Aidez-moi s'il vous plaît.