首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >学习XNA 3.1 Vs XNA 4.0

学习XNA 3.1 Vs XNA 4.0
EN

Stack Overflow用户
提问于 2011-06-12 01:38:03
回答 2查看 3.3K关注 0票数 2

我刚开始学习XNA,它进展顺利。然而,我想知道我是否是通过学习3.1而不是4.0射中了自己的脚?

我知道什么是新的:http://msdn.microsoft.com/en-us/library/bb417503.aspx,而这似乎主要是电话,接口和视频功能--我不太感兴趣--我更多的是做核心的3D内容。

关键是:我已经拥有VisualStudio2008VISUALSTUDIO专业人员了,如果在4.0.中的游戏编程没有什么不同的话,我不想获得VS 2010。

,这个世界已经改变了吗?我在3.1中学到的东西会变得多余吗?

库中也有代码差异,但它们不是主要的,在这里可以看到许多代码差异:http://www.nelxon.com/blog/xna-3-1-to-xna-4-0-cheatsheet/,例如,我不得不找出与Riemers相比的代码差异:

XNA4.0

代码语言:javascript
复制
     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

代码语言:javascript
复制
    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);
    }
EN

回答 2

Stack Overflow用户

发布于 2011-06-12 06:35:48

是的。世界已经发生了变化。XNA3.1已经是多余的了.

有主要的架构,API和引擎盖下的变化为4.0。这些变化是重大的,特别是在渲染方面。您最好使用VS2010 Express和XNA4.0,而不是使用VS2008 Professional和XNA3.1。

票数 3
EN

Stack Overflow用户

发布于 2011-06-12 02:16:54

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6319599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档