自定义BlendState以避免AlphaBlending工件

时间:2012-03-30 01:20:37

标签: c# colors xna draw alphablending

我基本上是在每一帧上绘制一个纹理,每次我绘制它我想减少alpha以使它最终达到0所以没有任何伪影。

基本等式是:

result = (source * sourceBlendFactor) blendFunction (destination * destinationBlendFactor)

因为我的目的地是Color.Transparent我认为我需要:

result = 0 = (source * sourceBlendFactor); 

我绞尽脑汁探索不同的BlendState组件,但我似乎无法实现这一点......

有没有办法让alpha线性递减?

1 个答案:

答案 0 :(得分:1)

当然可以。定义一个值,该值保持当前的alpha状态在1和0之间。每帧减去该值,直到它达到0.在绘制方法中,确定着色颜色的alpha值。

byte alpha = 255 - (currentAlphaState * 255);
spriteBatch.Draw(...., new Color( 255, 255, 255, alpha) ...); // assuming white is your default tint color