XNA Alpha在Game Studio 4.0中混合纹理的一部分

时间:2011-06-12 17:55:00

标签: xna alphablending xna-4.0 blending color-blending

您好我正在尝试按照this question使用Alpha混合时关于使纹理的一部分变得透明的答案 唯一的问题是这只适用于XNA 3.1并且我在XNA 4.0中工作,所以像RenderState这样的东西在同一个上下文中不存在,我不知道在哪里可以找到GfxComponent类库。

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

1 个答案:

答案 0 :(得分: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

编辑:在帖子中你可以看到使用BlendState的Shawn。您可以创建一个新的实例,然后根据需要进行设置,并将其传递给图形设备。像这样:

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;

更清楚了吗?