OpenGL and the Detonator drivers of Nvidia

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…?


This is probably a stupid question, but do you have an alpha channel in your draw buffer? Do you render anything with alpha != 1.0?

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:

  1. Why did it work with some drivers and with others not ?

Though, for me this is unimportant… )) IT WORKS !

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().

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.