这个旧代码在XNA 4.0中不起作用。必须更改什么,以便代码在XNA 4.0中工作?
spriteBatch.Begin(SpriteBlendMode.AlphaBlend,SpriteSortMode.Immediate,SaveStateMode.None,Matrix.Identity);
graphics.GraphicsDevice.SamplerStates[0].MagFilter = TextureFilter.Point;
graphics.GraphicsDevice.SamplerStates[0].MinFilter = TextureFilter.Point;
graphics.GraphicsDevice.SamplerStates[0].MipFilter = TextureFilter.Point;
spriteBatch.End();
我收到以下错误消息:
'SpriteBlendMode'在当前上下文中不存在 当前上下文中不存在“SaveStateMode” 'Microsoft.Xna.Framework.Graphics.SamplerState'不包含 'MagFilter'的定义,没有扩展名'MagFilter' 接受第一个类型的参数 可以找到'Microsoft.Xna.Framework.Graphics.SamplerState'(是 你错过了using指令或程序集引用?) 'Microsoft.Xna.Framework.Graphics.SamplerState'不包含 'MinFilter'的定义,没有扩展方法'MinFilter' 接受第一个类型的参数 可以找到'Microsoft.Xna.Framework.Graphics.SamplerState'(是 你错过了using指令或程序集引用?) 'Microsoft.Xna.Framework.Graphics.SamplerState'不包含 'MipFilter'的定义,没有扩展名'MipFilter' 接受第一个类型的参数 可以找到'Microsoft.Xna.Framework.Graphics.SamplerState'(是 你错过了使用指令或程序集引用?)
答案 0 :(得分:4)
以下资源将向您展示如何解决这些问题:
http://www.nelxon.com/blog/xna-3-1-to-xna-4-0-cheatsheet/
这些都是与将旧的XNA代码升级到4.0
相关的常见问题答案 1 :(得分:1)
在使用4.0版本的XNA Framework更新代码时,您需要注意以下几点:
另外,还有一件事(当我更新我的代码时抓住了我):似乎在XNA框架的版本3.1和4.0之间发生了一些变化,这将使得SamplerStates集合和SamplerState对象被读取 - 仅在图形设备初始化之后。我发现创建自己的SamplerState对象(并修改那里的属性)起作用了:
SamplerState sState = new SamplerState();
sState.Filter = TextureFilter.Point;
BaseGame.Device.SamplerStates[0] = sState;
答案 2 :(得分:0)
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, null, Matrix);
spriteBatch.End();
在XNA 4.0中,如果不重新连接图形设备,则无法更改采样器状态,
所以在你的游戏Initialize()方法中,你需要添加graphics.GraphicsDevice.SamplerStates[0].Filter = TextureFilter.Point;
据我所知,这应该是你想要的!