1

这个旧代码在 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”的定义,并且没有接受“Microsoft.Xna.Framework”类型的第一个参数的扩展方法“MagFilter”。可以找到 Graphics.SamplerState(您是否缺少 using 指令或程序集引用?)“Microsoft.Xna.Framework.Graphics.SamplerState”不包含“MinFilter”的定义,并且没有扩展方法“MinFilter”接受第一个可以找到“Microsoft.Xna.Framework.Graphics.SamplerState”类型的参数(您是否缺少 using 指令或程序集引用?)“Microsoft.Xna.Framework.Graphics.SamplerState”不包含“MipFilter”的定义并且找不到接受“Microsoft.Xna.Framework.Graphics.SamplerState”类型的第一个参数的扩展方法“MipFilter”(您是否缺少 using 指令或程序集引用?)

4

3 回答 3

5

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

http://www.nelxon.com/blog/xna-3-1-to-xna-4-0-cheatsheet/

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

于 2012-12-28T15:34:45.393 回答
2

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

另外,还有一件事(在我更新代码时引起了我的注意):似乎在 XNA 框架的 3.1 和 4.0 版本之间发生了一些变化,这将使 SamplerStates 集合和 SamplerState 对象在图形设备被初始化。我发现创建自己的 SamplerState 对象(并修改那里的属性)有效:

SamplerState sState = new SamplerState();
sState.Filter = TextureFilter.Point;
BaseGame.Device.SamplerStates[0] = sState;
于 2013-06-23T02:37:52.260 回答
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;

据我所知,这应该是您正在寻找的!

于 2012-12-28T20:33:29.410 回答