如何将此旧的XNA代码转换为XNA 4.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' 您缺少使用指令或装配给参考吗?) 'microsoft.xna.framework.graphics.samplerstate'不包含 " MinFilter"的定义和没有扩展方法" MinFilter" 接受类型的第一个论点 可以找到'Microsoft.xna.framework.graphics.samplerstate' 您缺少使用指令或装配给参考吗?) 'microsoft.xna.framework.graphics.samplerstate'不包含 " MipFilter"的定义和没有扩展方法" MipFilter" 接受类型的第一个论点 可以找到'Microsoft.xna.framework.graphics.samplerstate' 您缺少使用指令或装配给参考吗?)

这是一种资源,它将向您展示如何解决这些问题:

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

这些都是与将旧XNA代码升级到4.0

有关的非常常见的问题

,您需要注意几件事,以使您的代码与XNA框架的4.0版本保持最新:

  • SpriteBatch.Begin语法略有不同
  • Samplerstate.mag,.mip和.min属性都合并到.filter属性
  • SpriteBlendMode现在被BlendState对象替换

另外,还有一件事(当我更新我的代码时,我引起了我的看法):似乎在XNA框架的3.1和4.0之间发生了变化,这将使之成为现实,以便读取采样巨星的集合和采样对象。只有在初始化图形设备之后。我发现创建自己的采样对象(并修改那里的属性)有效:

SamplerState sState = new SamplerState();
sState.Filter = TextureFilter.Point;
BaseGame.Device.SamplerStates[0] = sState;
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, null, Matrix);
spriteBatch.End();

在XNA 4.0中,您无法在不重新启动图形设备的情况下更改采样器状态, 因此,在您的游戏初始化方法中,您需要添加graphics.GraphicsDevice.SamplerStates[0].Filter = TextureFilter.Point;

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

相关内容

  • 没有找到相关文章

最新更新