Hi,
maybe some of you have already bad experience with the drivers of Nvidia.
Do you know that they don`t support blending using glBlendFunc(GL_ONE_MINUS_DST_ALPHA,GL_DST_ALPHA) ?
I tried as hard as i could, but this is the only way to achieve my objective: that a background picture shines nicely through the rendered objects.
Do you know some other solution/trick…?
Well, yes i have
I know that my blending method works, since i have no problems while i use other drivers (those from Asus for instance). But i am sure that many people are using the Nvidia drivers…
And you make sure you have a destination alpha when you create your window? (e.g. By using GLUT_ALPHA in glutInit if using glut, or getting a PIXELFORMATDESCRIPTOR that has cAlphaBits > 0 if using the Win32 API.)
Thank you very much. It works now using GLUT_ALPHA. I thought i had an alpha channel in my DrawBuffer, because the RedBook doesn`t mention this option at all.
Of course one question arises now:
Why did it work with some drivers and with others not ?
It’s possible that the other drivers were giving you a “best fit” pixel format that just happened to include an Alpha buffer. I think glut simply uses ChoosePixelFormat to find a PIXELFORMATDESCRIPTOR with the stuff you requeset. ChoosePixelFormat will return something that has at least what you request, and potentially other stuff.
I ran into a similar problem with porting a glut app to Linux once. I hadn’t explicitly requested a depth buffer using GLUT_DEPTH because with Windows and glut, I always got a depth buffer anyway. With Linux, I didn’t get a depth buffer unless I explicitly requested one.
Odd since I use the latest Detonator from nVidia and experience no problems with the glBlendFunc().
If you read the rest of the thread, you’d realize that it wasn’t a driver bug, but an app bug: If you don’t ask for a frame buffer with an alpha channel, you may not get an alpha channel, so destination-alpha blending will not give you the behavior you expect.