blend modes behaving weird on ATIs

hello, the blendfuncs i use work fine on NVIDIA graphic cards, but on ATIs they produce weird results.
objects that have an alpha value other than 1 (which makes them transparent obviously) seem to shine through light objects in the front, exactly where the alpha channel of the texture is.

screenshot:

http://www.embege.com/misc/weird.png

here, the object on the right is completely opaque, and in front of the flower, but still the flower’s alpha channel shines through in gray.
on NVIDIAs this looks perfectly correct, the flower is completely covered by the object on the right

the blendfunction used is
glBlendFunc(GL_DST_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

maybe it has something to do with the pixelformat. if i query it using GLCapabilities, i get 8 bits for each RGB and 0 bits for alpha, both on ATI and NVIDIA.

thanks

anyone?

this is really making me worried, since ATI users cant really play my game correctly.

You have to either disable blending after you start drawing opaque shapes again, or change the blending mode back to:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); note: SRC, not DST

thanks riven,

unfortunately both options are not possible in my situation.

  1. i need the DST blendmode to avoid the dark edges along textures with alpha. (i am not using pre calculated alpha)
  2. blending is required also for the “opaque” objects, since they also may have a texture with alpha channel.

the real question here is, why is it working on NVIDIAs but not on ATIs?