我非常渴望在DirectX中实现所需的alpha混合效果。 我尝试绘制纹理,并在其上彩色三角形条。DirectX9中的Alpha混合问题
尽管我尝试了所有尝试,但看起来条纹的颜色受到以前绘制的纹理颜色的影响。即使我将D3DRS_ALPHABLENDENABLE设置为FALSE,我仍然会看到受影响的颜色。
下面是图像如何猜想的样子(用OpenGL渲染)
这里是我所得到的与DirectX渲染:
正如你所看到的,第二张图像紫色条带有黄色阴影,没有任何特定原因:((黄色矩形是纹理,不是多边形)。
这里是我的引擎使用的初始化设置:
m_pDirect3D_Device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
m_pDirect3D_Device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
m_pDirect3D_Device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
m_pDirect3D_Device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_BLENDDIFFUSEALPHA);
m_pDirect3D_Device->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
m_pDirect3D_Device->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
这些设置是给了我正确的Alpha混合纹理的唯一设置,但我绝不能达到多边形的正确混合。任何帮助?
非常好。谢谢 – parrowdice 2015-12-07 14:32:43