学习XNA 3.1 Vs XNA 4.0

时间:2011-06-12 01:38:03

标签: xna xna-4.0 xna-3.0

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

2 个答案:

答案 0 :(得分:3)

是。世界继续前进。 XNA 3.1已经是多余的。

有针对4.0的Major Architectural,API和引擎盖更改。这些变化很重要,特别是在渲染方面。使用VS2010 Express和XNA 4.0比使用VS2008 Professional和XNA 3.1更好。

答案 1 :(得分:0)

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