-1

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

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

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

非常感谢,提前!

PS 我的纹理背景填充了 alpha。

4

1 回答 1

0

所以你已经在你想要覆盖的纹理上设置了 alpha,这样 0 是透明的(即显示下面的内容)而 1 是不透明的(即显示覆盖纹理)?

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

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

一定要先画背景!另请注意,0 和 1 之间的值表示背景和覆盖纹理之间的线性插值。

于 2010-09-02T22:59:01.290 回答