2

嗨,我正在尝试遵循有关在使用此问题 的 Alpha Blending 时使纹理的一部分透明的答案唯一的问题是这仅适用于 XNA 3.1,而我正在使用 XNA 4.0,因此不存在像 RenderState 这样的东西在相同的上下文中,我不知道在哪里可以找到 GfxComponent 类库。

我仍然想做与示例问题相同的事情,一个从鼠标位置辐射的圆形区域,当鼠标悬停在它上面时,它使覆盖纹理透明。

4

1 回答 1

2

3.5

GraphicsDevice.RenderState.AlphaBlendEnable = true;

4.0

GraphicsDevice.BlendState = BlendState.AlphaBlend;

有关更多信息,请参阅 Shawn Hargreaves 帖子:http: //blogs.msdn.com/b/shawnhar/archive/2010/06/18/spritebatch-and-renderstates-in-xna-game-studio-4-0.aspx

编辑:在帖子中,您可以看到 Shawn 使用 BlendState。您创建一个新实例,随意设置它,然后将它传递给图形设备。像这样:

BlendState bs = new BlendState();
bs.AlphaSourceBlend = Blend.One;
bs.AlphaDestinationBlend = Blend.Zero;
bs.ColorSourceBlend = Blend.Zero;
bs.ColorDestinationBlend = Blend.One;
bs.AlphaBlendFunction = BlendFunction.Add;
graphicsDevice.BlendState = bs;

那个更清楚?

于 2011-06-13T18:15:05.830 回答