我正在尝试将Photoshop滤镜复制为Direct3D。我一直在阅读和搜索不同的渲染状态,并且效果几乎可以正常工作。问题在于它忽略了纹理的Alpha值。
这是说明情况的图像:
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);
Run Code Online (Sandbox Code Playgroud)
编辑添加了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);
Run Code Online (Sandbox Code Playgroud)