2011-06-12 109 views
2

我开始学习XNA并顺利进行。但是,我不知道我是否通过学习3.1而不是4.0来开始自己的脚步?学习XNA 3.1对XNA 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啧:

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); 
    } 
+0

对于那些投票结束 - 我还可以问这个编程问题吗? – markmnl 2011-06-12 02:09:03

+0

如果在此处关闭,请尝试在GameDev Stack Exchange(http://gamedev.stackexchange.com/)上提问您的问题。 – Empyrean 2011-06-12 06:37:52

+0

带有Visual Studio的XNA是程序员常用的软件工具。根据常见问题,这与软件开发有关,不确定它应该被关闭。 – Empyrean 2011-06-12 13:52:31

回答

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和基本上意味着Xbox的“Hidef”有很多限制,并且不会在任何我们的计算机上启动至少没有DirectX 10+卡。我喜欢4.0的组织比3.1更好,但它与winPhone7和Xbox的兼容性更强,3.1版本的某些功能仅限于PC。由于您正在学习XNA,所以选项仍然可以使用,但是如果您觉得将来需要从3.1移植到4.0,可能会有些困难。我正在为我们的游戏开发音频,并发现很多4.0的变化非常有用,但是我们的团队确实有一些打乱了很多图形的转换。希望这有助于!干杯!

+0

发生在我身上的时候,我开始了关闭3.1并最终将所有内容都更改为4.0 – Oofpez 2012-04-13 11:38:17

3

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

有主要建筑,API和引擎盖下的变化为4.0。这些变化很重要,特别是在渲染方面。你最好使用VS2010 Express和XNA 4.0,而不是VS2008 Professional和XNA 3.1。

+0

这是正确的答案,XNA3.1已经被替换了一年多了,你不能再用Xbox,WP7和任何比赛。渲染API变得简单很多,导入器在被压扁的时候存在很多bug。我已经在VS Express和VS Pro中使用了XNA 4,并且只有很少的东西(比如分析器)会让我继续使用VS Pro,如果我不得不选择的话。我会一直选择XNA4 + VS Express作为XNA3.1 + VS Pro。 – 2011-06-12 12:33:04