我想做的是使用XNA中的alpha混合来使绘制的纹理的某些部分透明。例如,我将屏幕清除为某种颜色,比如蓝色。然后我绘制一个红色的纹理。最后,我绘制一个径向渐变纹理,从中心完全透明到边缘完全黑色。我希望先前绘制的红色纹理在与径向渐变纹理相同的位置处是透明的。因此,您应该能够通过红色纹理看到蓝色背景。
我认为这样会有效。
但是它似乎忽略了我所有的RenderState设置。我还尝试将SpriteBlendMode设置为AlphaBlend,它会混合纹理,但这不是我想要的效果。
任何帮助都将不胜感激。
我认为这样会有效。
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin(SpriteBlendMode.None);
spriteBatch.Draw(bg, new Vector2(0, 0), Color.White);
spriteBatch.End();
spriteBatch.Begin(SpriteBlendMode.None);
GraphicsDevice.RenderState.AlphaBlendEnable = true;
GraphicsDevice.RenderState.AlphaSourceBlend = Blend.One;
GraphicsDevice.RenderState.AlphaDestinationBlend = Blend.Zero;
GraphicsDevice.RenderState.SourceBlend = Blend.Zero;
GraphicsDevice.RenderState.DestinationBlend = Blend.One;
GraphicsDevice.RenderState.BlendFunction = BlendFunction.Add;
spriteBatch.Draw(circle, new Vector2(0, 0), Color.White);
spriteBatch.End();
GraphicsDevice.RenderState.AlphaBlendEnable = false;
但是它似乎忽略了我所有的RenderState设置。我还尝试将SpriteBlendMode设置为AlphaBlend,它会混合纹理,但这不是我想要的效果。
任何帮助都将不胜感激。