I am trying to use a alpha test on a radeon 9700 but it does not work. I looked at my pixel format and it says i have 8 alphabits(not the cerial). My code works on nvidia video card. Here is an excerpt:
glRasterPos2f( 0.0f, 0.0f );
glEnable( GL_ALPHA_TEST );
glAlphaFunc(GL_GREATER, 0.10f );
BOOL bAlpha = glIsEnabled( GL_ALPHA_TEST );
glCopyPixels( m_rcDevicePos.left, m_rcDevicePos.top ,
m_rcDevicePos.Width(), m_rcDevicePos.Height(), GL_COLOR );
the pixels i am trying to copy are in RGBA format. I asked for 24 bit color but got 32 bits which i expected to happened and is not a problem. I also asked for 8 alpha bits and got them.
It works fine w glDrawPixels (and geometry rendering), that’s all I know.
What exactly happens? No pixels discarded? All pixels discarded?
Do you call glColorMask anywhere in your code?
Does it work as expected if you ‘emulate’ glCopyPixels with a sequence of glReadPixels to a system memory buffer followed by glDrawPixels?
It will not mask anything, even when i replace the GL_GREATER with GL_NEVER.
I am trying to copy the pixels from the front buffer to the back buffer, after drawing new line strips or quads or whatever.
No i am not doing any color masks.
Thanks by the way for trying it out.
I just tried drawpixels and it works, but to do the drawpixels i have to do a read pixels and that is just to slow on an ati radeon card.
Just looked it up to make sure. In section 4.3.3 CopyPixels is specced to behave exactly like a ReadPixels/DrawPixels sequence (without the intermediate buffer, of course). Ie this looks like a driver bug.
You should prepare a minimum test case application (I’d suggest using GLUT) and send that to ATI devrel along with source code and a description.