自定义BlendState以避免AlphaBlending瑕疵
本文关键字:AlphaBlending 瑕疵 BlendState 自定义 | 更新日期: 2023-09-27 18:29:33
我基本上每帧都在自己身上绘制一个纹理,每次绘制它时,我都想减少alpha,这样它最终会达到0,这样就不会留下任何瑕疵。
基本方程是:
result = (source * sourceBlendFactor) blendFunction (destination * destinationBlendFactor)
由于我的目的地是彩色。透明我想我需要:
result = 0 = (source * sourceBlendFactor);
我绞尽脑汁研究不同的BlendState组件,但我似乎无法做到这一点。。。
有什么方法可以使alpha线性递减吗?
当然可以。定义一个将当前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