【发布时间】:2010-04-17 01:09:04
【问题描述】:
我想做的是在 XNA 中使用 alpha 混合来使绘制的纹理的一部分透明。例如,我将屏幕清除为某种颜色,比如说蓝色。然后我画了一个红色的纹理。最后,我绘制了一个从中心完全透明到边缘完全黑色的径向渐变纹理。我想要的是之前绘制的红色纹理在与径向渐变纹理相同的位置是透明的。所以你应该可以透过红色纹理看到蓝色的背景。
我认为这会起作用。
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。它融合了纹理,但这不是我想要的效果。
任何帮助将不胜感激。
【问题讨论】:
标签: xna