C# 如何将这个旧的XNA代码转换为XNA4.0代码?

C# 如何将这个旧的XNA代码转换为XNA4.0代码?,c#,xna,xna-4.0,xna-3.0,C#,Xna,Xna 4.0,Xna 3.0,这段旧代码在XNA4.0中不起作用。为了使代码在XNA4.0中工作,必须更改哪些内容 spriteBatch.Begin(SpriteBlendMode.AlphaBlend,SpriteSortMode.Immediate,SaveStateMode.None,Matrix.Identity); graphics.GraphicsDevice.SamplerStates[0].MagFilter = TextureFilter.Point; graphics.GraphicsDevic

这段旧代码在XNA4.0中不起作用。为了使代码在XNA4.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”(是 是否缺少using指令或程序集引用?)


以下资源将向您展示如何解决这些问题:


这些都是与将旧XNA代码升级到4.0相关的常见问题。以下是一个资源,将向您展示如何解决这些问题:

spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, null, Matrix);
spriteBatch.End();

这些都是与将旧XNA代码升级到4.0相关的常见问题

spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, null, Matrix);
spriteBatch.End();
在XNA 4.0中,如果不重新调整图形设备,则无法更改采样器状态, 因此,在games Initialize()方法中,需要添加
graphics.GraphicsDevice.SamplerState[0].Filter=TextureFilter.Point

据我所知,那应该是你要找的

在XNA 4.0中,如果不重新调整图形设备,则无法更改采样器状态, 因此,在games Initialize()方法中,需要添加
graphics.GraphicsDevice.SamplerState[0].Filter=TextureFilter.Point


据我所知,那应该是你要找的

在使用4.0版本的XNA框架更新代码时,需要注意以下几点:

  • SpriteBatch.Begin语法略有不同
  • SamplerState.Mag、.Mip和.Min属性都已删除
  • SpriteBlendMode现在处于启用状态
另外,还有一件事(在我更新代码时被我抓住了):XNA框架的3.1版和4.0版之间似乎发生了一些变化,使得SamplerStates集合和SamplerState对象在图形设备初始化后是只读的。我发现创建自己的SamplerState对象(并修改其中的属性)是有效的:


在使用4.0版本的XNA框架更新代码时,您必须注意以下几点:

  • SpriteBatch.Begin语法略有不同
  • SamplerState.Mag、.Mip和.Min属性都已删除
  • SpriteBlendMode现在处于启用状态
另外,还有一件事(在我更新代码时被我抓住了):XNA框架的3.1版和4.0版之间似乎发生了一些变化,使得SamplerStates集合和SamplerState对象在图形设备初始化后是只读的。我发现创建自己的SamplerState对象(并修改其中的属性)是有效的:


“不起作用”并没有真正的帮助。它编译吗?它是否给出错误消息,如果是,是什么?它运行时是否没有错误并意外响应?我添加了错误消息。“不工作”并没有真正的帮助。它编译吗?它是否给出错误消息,如果是,是什么?它运行时是否没有错误并意外响应?我添加了错误消息。我试图更改代码,但不知道如何更改MagFilter、MinFilter和Mipfilter。在这三行中我应该更改什么?遗憾的是,这个例子是在上下文之外针对这个特定问题给出的-可能是在draw代码中,这似乎是SamplerStates[0]为null或只读时。我试图更改代码,但我不知道如何更改MagFilter、MinFilter和Mipfilter。在这三行中我应该修改什么?遗憾的是,这个例子是针对这个特定问题断章取义给出的-大概是在draw代码中,这似乎是SamplerStates[0]为null或只读时给出的。它不起作用。我收到此错误消息,但不知道如何修复它:无法更改只读状态。状态对象在第一次绑定到GraphicsDevice时变为只读。若要更改属性值,请创建一个新的SamplerState实例。在XNA 4.0中,如果不重新初始化图形设备,则无法更改采样器状态,因此,请在初始化方法中添加“Graphics.graphicsDevice.SamplerState[0]”部分。它不起作用。我收到此错误消息,但不知道如何修复它:无法更改只读状态。状态对象在第一次绑定到GraphicsDevice时变为只读。要更改属性值,请创建一个新的SamplerState实例。在XNA 4.0中,如果不重新初始化图形设备,则无法更改采样器状态,因此,请在初始化方法中添加“Graphics.graphicsDevice.SamplerState[0]”部分