Original Post
Hi there, This time I'm playing with the framebuffer object extension, trying to render to an off-screen floating point buffer...everything seems to be working fine with my nVidia card (GF7800), but if I run the same application on my ATI-based PC (9700Pro), then the framerate drops drastically to less than 1 frame per second. After a bit of trial and error I found quite some interesting facts: 1) The best internal format to be used for floating point targets is GL_RGB_FLOATxx_ATI (16 or 32 bits), as the "standard" GL_RGBxxF_ARB is not supported by ATI until the X800 series and above...so it is no so standard :P 2) My GeF7800 does not support 32bits floating point framebuffers if the render target is a texture; it only works if its a render buffer (glCheckFrameBufferStatus fails) 3) My GeF7800 does not support 16 bit depth buffers (glCheckFrameBufferStatus fails) 4) The ATI problem dissapears if I use a plain 8bit color RGB framebuffer. Besides that, I've traced my application and found that the problem is caused only if I perform a glClear(GL_DEPTH_BUFFER_BIT) once the floating point buffer is bound and fully working (the glCheckFrameBufferStatusEXT says so at least). If I do not clear the depth buffer, the applications runs smoothly on both ATI and nVidia, but if just uncommet that damn line, then I start getting 1FPS or less on ATI...oh! and listen to this: the more bits the depth buffer has, the worse it runs...I mean, if i attach a 16bits depth buffer, then it runs at, lets say 1FPS, but if I attach a 24bit one, then it runs at 0.5FPS... With the nVidia configuration, it always works (as long as I use 16bit FP color render targets and 24bit depth targets). Anyone knows what the hell is going on? I'm kinda lost now. Could it be a problem with the ATI drivers? I have googled the problem, but didnt find anything about this... I'd appreciate some comments on this. Thanks in advance,