Hi,
I am currently trying to figure out a way to do Multisampling with floating point textures on an FBO but I don’t really get it to work. Is that possible?
For Floating point textures I set my FBO up like that:
// Setup our FBO
glGenFramebuffersEXT(1, &fbo);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
glGenTextures(1, (GLuint *)textureName);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, (GLuint)textureName[0]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F_ARB, (width), (height), 0, GL_RGBA, GL_FLOAT, NULL);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, (GLuint)textureName[0], 0);
//setup Depthbuffer:
glGenRenderbuffersEXT(1, &depthBuffer);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthBuffer);
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, width, height);
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthBuffer);
For Multisampling on the FBO I generate another FBO for blitting:
glGenRenderbuffersEXT(1, &mcolorBuffer);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, mcolorBuffer);
glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER_EXT, 3, GL_RGBA, width, height);
glGenRenderbuffersEXT(1, &mdepthBuffer);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, mdepthBuffer);
glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER_EXT, 3, GL_DEPTH_COMPONENT24, width, height);
glGenFramebuffersEXT(1, &mfbo);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, mfbo);
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, mcolorBuffer);
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, mdepthBuffer);
So basically everything works as long as I don’t use a floating point texture when using multisampling. What can I do to use both at the same time? Any ideas?
When I put GL_RGBA16F_ARB as the format for the multisampled FBO it still does not work. Weirdness.
By the way, I am on a First generation Mac Book Pro with an ATI Radeon x1600. Could it be that the card simply does not support multisampling on floating point targets?