尝试使用IDirect3D9#SetTextureStageState找出特定的alpha蒙版应用程序

时间:2012-01-11 04:45:46

标签: graphics directx-9 alpha-transparency

我试图创建一个系统,我可以使用第二个纹理作为alpha蒙版在纹理上导致淡出。

我在第0阶段加载颜色纹理,在第1阶段加载蒙版纹理。我可以让它们正确分阶段,以便alpha值基于蒙版,我可以通过使用a来获得淡入淡出。滑动D3DTA_CONSTANT。问题在于我试图创建一种我似乎无法摆脱可用D3DTA的特定行为。

基本上我想要有2个值,一个名为' step'而另一个叫做“模糊”。模糊的'在整个效果和“步骤”中,值将保持不变。参数将从0开始,并在几帧中增加到255。我试图创建以下行为:

*掩码-α值低于'步骤'用零alpha绘制。

*掩码-α值高于'步骤' +'模糊'用255 alpha绘制。

*掩码-α值在'步骤'之间的范围内的字母。并且(' step' +'模糊')绘制alpha缩放,以便alpha' step'是零alpha和alpha(' step' +'模糊')绘制最大alpha。

这是一个显示功能的图表,因为它难以用文字解释:

http://imageshack.us/photo/my-images/834/desiredalphamaskfunctio.png/

我遇到的主要问题是我无法弄清楚如何配置纹理阶段,以便中间范围(步骤和步骤+模糊之间)到"拉伸&# 34;它的值在0到255之间。没有直接的除法或乘法,只是调制,所以我不能以明显的方式做到这一点,但我很确定那是一种方法。做到这一点我还没有发生。 (我对D3DTOP_MULTIPLYADD有一些希望,但'乘法'结果只是另一种调制。)

有人有什么想法吗?

提前感谢任何建议。

0 个答案:

没有答案