如何将这个旧的XNA代码翻译成XNA 4.0代码?

时间:2012-12-28 14:41:36

标签: c# xna xna-4.0 xna-3.0

这个旧代码在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'(是   你错过了使用指令或程序集引用?)

3 个答案:

答案 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;

据我所知,这应该是你想要的!