PDA

View Full Version : FBO + float (ati_float and arb) = error



Bobo.Bobo
04-19-2008, 11:28 AM
Hi,
I've tried to find how to solve this, but I've found nothing that helped me.
I try to make FBO with float texture on GeForce 6.
It results with GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT.

Here is the code:


glGenFramebuffersEXT(1, &fbo);

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);

glGenTextures(1, &color_attachment);
glBindTexture(target, color_attachment);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA_FLOAT16_ATI, width, height, 0, GL_RGBA_FLOAT16_ATI, GL_FLOAT, NULL);
glTexParameterf(target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(target, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, color_attachment, 0);


GLenum status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);

What can I do to solve this?
I've tried changing MIN and MAG filters to GL_NEAREST, disabling depth buffers and some other things and nothing.
It works great with GL_RGBA.

Dark Photon
04-19-2008, 11:51 AM
I try to make FBO with float texture on GeForce 6. It results with GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT...glTexIm age2D(GL_TEXTURE_2D, 0, GL_RGBA_FLOAT16_ATI, width, height, 0, GL_RGBA_FLOAT16_ATI, GL_FLOAT, NULL);

GL_RGBA_FLOAT16_ATI is not a valid external format (AFAIK). This should be GL_RGBA. Did you check for GL errors after each call (or use a GL debugger such as gDebugger)?

Also, Geforce 6 with latest drivers supports ATI_texture_float and ARB_texture_float. Prefer GL_RGBA16F_ARB to GL_RGBA_FLOAT16_ATI for the internal format. Same #define value, but symbol is cross-vendor.

Bobo.Bobo
04-19-2008, 01:02 PM
Thank you!
It was all about external format!
I had no idea it is taken at all, because I pass NULL so I pass no data and I thought that format of this NULL data is not important.
I've changed it to GL_RGBA and it works now!

Thanks:)