Direct3D renderujący obrazy 2D z „mnożeniem” trybu mieszania i alfa

Próbuję powielić filtr Photoshopa mnożąc się za pomocą Direct3D. Czytałem i gogliłem o różnych stanach renderowania, a efekt prawie działa. Problem polega na tym, że ignoruje wartość alfa tekstur.

Oto obraz, który wyjaśnia sytuację:

http://www.kloonigames.com/petri/stackoverflow_doesnt_allow_.jpg

Znalazłem jedno rozwiązanie, polegające na zapisaniu obrazów bez przezroczystości i białego tła. Ale nie jestem zadowolony z tego rozwiązania. Problem polega na tym, że naprawdę muszę użyć wartości alfa. Chcę stopniowo wygasać obrazy. Nie mogę tego zrobić, jeśli tryb mieszania ignoruje wartość alfa.

Pytanie brzmi: jak renderować obrazy za pomocą alfy?

Oto kod trybu mieszania:

dev->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
dev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ZERO);
dev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_SRCCOLOR);

Edycja dodała SetTextureStageState

dev->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
dev->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
dev->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
dev->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);

questionAnswers(4)

yourAnswerToTheQuestion