2

我开始学习 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);
    }
4

2 回答 2

3

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

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

于 2011-06-12T06:35:48.313 回答
0

第一次发帖。在游戏开发 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 非常有用,但是我们的团队在转换大量图形时确实遇到了一些问题。希望这有帮助!干杯!

于 2011-06-12T02:16:54.830 回答