I ran a little test, it didn't show any differences in Wine or XP in such case (D3DTA_TEXTURE alpha selected and no alpha in texture pixelformat). This seems to give alpha=1.0. I found nothing on this at msdn, but it more or less makes sense (no alpha = opaque image). Do you think there would be any use in adding such test to ddraw/tests/visual.c?
Stefan Dösinger wrote:
Am Montag, 7. Januar 2008 07:55:08 schrieb Alexander Dorofeyev:
"D3DTBLEND_MODULATE Modulate texture-blending is supported. In this mode, the RGB values of the texture are multiplied with the RGB values that would have been used with no texturing. Any alpha values in the texture replace the alpha values that would have been used with no texturing."
D3DTA_TEXTURE has a somewhat strange behavior. If no texture is set, it behaves like D3DTA_PREVIOUS. Perhaps for alphaarg it behaves similarly if there is a texture, but it has no alpha. If that is the case, then I think it matches what you need for D3DTBLEND_MODULATE. Otherwise I think a private value like your D3DTOP_DX6MODULATE is the only way.
So I'd say test how D3DTA_TEXTURE should behave, maybe we implement it incorrectly at the moment.