您好我正在尝试按照this question使用Alpha混合时关于使纹理的一部分变得透明的答案 唯一的问题是这只适用于XNA 3.1并且我在XNA 4.0中工作,所以像RenderState这样的东西在同一个上下文中不存在,我不知道在哪里可以找到GfxComponent类库。
我仍然想做与示例问题相同的事情,一个从鼠标位置辐射的圆形区域,当鼠标悬停在覆盖纹理上时,覆盖纹理会变得透明。
答案 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;
更清楚了吗?