如何在DX 9中仅对纹理的某些部分进行alphablend?

时间:2010-09-02 21:31:40

标签: directx textures alphablending

如何在DX 9中仅对纹理的某些部分进行alphableble?

例如,Photoshop中的图层(或支持图层的任何其他照片编辑程序) 你可以在一个图层(背景填充alpha)中绘制一些东西,然后将图层放在原始图像上(在屏幕上绘制纹理),这将导致原始图像+仅在图层中绘制的内容。

是的,我知道我的英语不是很“闪亮”。

非常感谢,提前!

P.S。我的纹理背景填充了alpha。

1 个答案:

答案 0 :(得分:0)

所以你在你希望叠加的纹理上设置了alpha,使得0是透明的(即显示下面是什么),1是不透明的(即显示叠加纹理)?

如果是这样,那么您只需要设置一个简单的混合模式:

pDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
pDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );

确保先画背景!另请注意,0到1之间的值表示背景和叠加纹理之间的线性插值。