我试图用Direct3D复制Photoshop滤镜乘法。我一直在阅读和搜索不同的渲染状态,我的效果几乎可以工作。问题是它忽略了纹理的alpha值。Direct3D呈现“乘”混合模式和alpha的2D图像
下面是解释sitution图像:
http://www.kloonigames.com/petri/stackoverflow_doesnt_allow_.jpg
我找到了一个解决这个,这是为了将图像保存不透明度和白色背景。但是我对这个解决方案并不满意。问题是我真的需要使用alpha值。我想逐渐淡出图像。如果混合模式忽略alpha值,我无法做到这一点。
所以问题是如何使用alpha渲染图像?
这里的混合模式代码:
dev->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
dev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ZERO);
dev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_SRCCOLOR);
编辑添加的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);
下面是渲染的完整源代码:http://pastebin.com/m7d7991fb – user35268 2009-10-23 13:53:12
该链接不起作用... – zezba9000 2011-03-04 21:10:36
你设置了什么纹理 - > SetTextureStageState – 2009-10-23 14:14:57