I use an FBO blit operation to copy a colour attachment from one of my engine’s framebuffers. On nNidia Geforce 8, the operation is perfect, but on AMD Radeon 4750 the operation seems to only copy the part of the colour attachment (set as the GL read buffer) where the Alpha channel contains > 0 (ie not black).
I don’t think the AMD drivers are correct. Can anybody else confirm if this is a driver bug?
The source texture is RGBA16F and destination is RGBA8 format.
OpenGL 3.3.10188 compat profile used.
Do you have alpha testing enabled ?
It should be ignored according to the specs, but maybe it can cause a bug.
Does it change if you turn off blending while blitting?
The blit function isn’t supposed to do blending, of course. So if it does change, then it’s one kind of driver bug.
In addition to the above:
glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE );
glDisable( GL_SCISSOR_TEST );
glDisable( GL_STENCIL_TEST );
glDisable( GL_DEPTH_TEST );
glDisable( GL_DEPTH_BOUNDS_TEST_EXT );
Not that these should all make a difference, but may give you a line.
The extension spec only calls out pixel ownership and scissor.
You know what guys…you just can’t get the programmers these days!
My mistake. The blit is just fine (checked the screen shot image in photoshop - the Alpha is exactly what was in the FBO source image).
My issue arose because the alpha of the source image does contain black areas (due to stencil operations) and it’s my rendering of this image which does not take that into account.