【问题标题】:Learning XNA 3.1 Vs XNA 4.0 [closed]学习 XNA 3.1 与 XNA 4.0 [关闭]
【发布时间】:2011-09-13 06:12:43
【问题描述】:

我开始学习 XNA 并且进展顺利。但是我想知道我是否通过学习 3.1 而不是 4.0 来打自己的脚?

我知道有什么新功能:http://msdn.microsoft.com/en-us/library/bb417503.aspx,这似乎主要是电话、界面和视频功能 - 我对这些功能不太感兴趣 - 我更多的是做核心 3D 的东西。

症结是:我已经有Visual Studio 2008专业版,如果4.0的游戏编程差别不大,我不想再弄VS 2010了。

世界在前进吗?我在 3.1 中学习的内容会变得多余吗?

库中也有代码差异,但不是主要的,其中很多都可以在这里看到:http://www.nelxon.com/blog/xna-3-1-to-xna-4-0-cheatsheet/,例如与 Riemers Tut 相比我必须弄清楚的这个:

XNA 4.0

     protected override void Draw(GameTime gameTime)
     {
         device.Clear(Color.DarkSlateBlue);

         RasterizerState rs = new RasterizerState();
         rs.CullMode = CullMode.None;
         device.RasterizerState = rs;

         effect.CurrentTechnique = effect.Techniques["ColoredNoShading"];
         effect.Parameters["xView"].SetValue(viewMatrix);
         effect.Parameters["xProjection"].SetValue(projectionMatrix);
         effect.Parameters["xWorld"].SetValue(Matrix.Identity);
         foreach (EffectPass pass in effect.CurrentTechnique.Passes)
         {
             pass.Apply();

             device.DrawUserPrimitives(PrimitiveType.TriangleList, vertices, 0, 1, VertexPositionColor.VertexDeclaration);
         }

         base.Draw(gameTime);
     }

XNA 3.1

    protected override void Draw(GameTime gameTime)
    {
        device.Clear(Color.DarkSlateBlue);

        device.VertexDeclaration = new VertexDeclaration(device, VertexPositionColor.VertexElements);
        device.RenderState.CullMode = CullMode.None; // TODO only for testing!
        device.RenderState.FillMode = FillMode.Solid;

        effect.CurrentTechnique = effect.Techniques["ColoredNoShading"];
        effect.Parameters["xView"].SetValue(viewMatrix);
        effect.Parameters["xProjection"].SetValue(projectionMatrix);
        effect.Parameters["xWorld"].SetValue(Matrix.Identity);

        effect.Begin();
        foreach (EffectPass pass in effect.CurrentTechnique.Passes)
        {
            pass.Begin();
            device.DrawUserIndexedPrimitives<VertexPositionColor>(PrimitiveType.TriangleList, vertices, 0, 5, indices, 0, indices.Length / 3);
            pass.End();
        }
        effect.End();

        base.Draw(gameTime);
    }

【问题讨论】:

  • 对于那些投票结束的人 - 我还能在哪里问这个编程问题?
  • 如果此处关闭,请尝试在 GameDev Stack Exchange (gamedev.stackexchange.com) 上提问。
  • XNA 和 Visual Studio 是程序员常用的软件工具。根据常见问题解答,这与软件开发有关,不确定是否应该关闭。
  • 我在gamedev上重新发布后自己标记了它:gamedev.stackexchange.com/questions/13518/…

标签: xna xna-4.0 xna-3.0


【解决方案1】:

第一次发帖。在游戏开发 stackexchange 中发布了一个类似的问题,可以在这里找到(并重申你所说的大部分内容) https://gamedev.stackexchange.com/questions/7553/difference-between-xna-3-1-and-4-0 至于我的经验,我们的团队从 3.1 开始开发,并在项目进行到一半时最终移植到 4.0。 4.0 似乎迫使您进入“Reach”这两个规格之一,这是低端并且基于用于 winPhone7 的移动 GPU 和“Hidef”有很多限制,这基本上意味着 Xbox,并且不会在我们的任何计算机上启动至少没有 DirectX 10+ 卡。与 3.1 相比,我更喜欢 4.0 的组织,但它更适合 winPhone7 和 Xbox,因为 3.1 具有一些仅限 PC 的功能。由于您正在学习 XNA,因此该选项仍然可以使用,但是如果您觉得将来需要从 3.1 移植到 4.0,这可能会有些困难。我正在为我们的游戏开发音频,发现 4.0 中的很多变化非常有用,但是我们的团队在转换大量图形时确实遇到了一些问题。希望这有帮助!干杯!

【讨论】:

  • 也发生在我身上,我从 3.1 开始,最终将所有内容都更改为 4.0
【解决方案2】:

是的。世界已经在前进。 XNA 3.1 已经是多余的了。

4.0 有重大的架构、API 和底层更改。这些变化是显着的,尤其是在渲染方面。使用 VS2010 Express 和 XNA 4.0 比使用 VS2008 Professional 和 XNA 3.1 更好。

【讨论】:

  • 这是正确的答案,XNA3.1 已经被替换一年多了,你不能(再)在 Xbox、WP7 和任何比赛中使用它。渲染 API 变得更加简单,大量的导入程序错误被压扁了。我在 VS Express 和后来的 VS Pro 下使用了 XNA 4,如果我不得不选择的话,只有很少的东西(比如分析器)会让我继续使用 VS Pro。我总是会选择 XNA4 + VS Express 而不是 XNA3.1 + VS Pro。
猜你喜欢
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-09
相关资源
最近更新 更多