2011-06-12 6 views
2

Je commence à apprendre XNA et ça se passe bien. Cependant, je me demande si je me tire dans le pied en apprenant 3.1 pas 4.0? Je suis au courant de ce qui est nouveau: http://msdn.microsoft.com/en-us/library/bb417503.aspx, et cela semble surtout être le téléphone, les interfaces et les fonctionnalités vidéo - ce qui ne m'intéresse pas - je fais plus de choses en 3D de base.Apprendre XNA 3.1 Vs XNA 4.0

Le point de friction est: J'ai déjà Visual Studio 2008 professionnel et je ne veux pas avoir VS 2010 s'il y a peu de différence dans la programmation du jeu en 4.0.

Le monde a-t-il évolué? Est-ce que ce que j'apprends en 3.1 va devenir redondant?

Il existe également des différences de code dans les bibliothèques, mais ils ne sont pas majeurs, beaucoup d'entre eux peut être vu ici: http://www.nelxon.com/blog/xna-3-1-to-xna-4-0-cheatsheet/, par exemple celui que je devais comprendre par rapport à 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); 
    } 
+0

Pour ceux qui votent pour la fermeture - où puis-je poser cette question de programmation? – markmnl

+0

Essayez de poser votre question sur GameDev Stack Exchange (http://gamedev.stackexchange.com/) si elle est fermée ici. – Empyrean

+0

XNA avec Visual Studio sont des outils logiciels couramment utilisés par les programmeurs. Selon la faq, cela se rapporte au développement de logiciels, pas sûr qu'il aurait dû être fermé. – Empyrean

Répondre

0

première publication. Il y avait une question similaire posté dans le développement de jeu stackexchange qui peut être trouvé ici (et réitère ce que vous avez dit pour la plupart) https://gamedev.stackexchange.com/questions/7553/difference-between-xna-3-1-and-4-0 En ce qui concerne mon expérience, notre équipe a commencé à développer en 3.1 et a fini par porter à 4.0 à mi-chemin à travers notre projet. 4.0 semble vous forcer dans l'une des deux spécifications "Reach" qui est le bas de gamme et a beaucoup de restrictions basées sur le GPU mobile pour winPhone7 et "Hidef" qui signifie essentiellement Xbox et ne démarre sur aucun de nos ordinateurs n'avait pas au moins une carte DirectX 10+. J'aime l'organisation de 4.0 mieux que la 3.1 mais il est beaucoup plus en phase avec le winPhone7 et la Xbox où 3.1 a quelques fonctionnalités qui ne sont que des PC. Puisque vous apprenez XNA, l'option est toujours ouverte à l'utilisation, mais si vous ressentez le besoin de passer de 3.1 à 4.0 dans le futur, cela peut être difficile. Je développais l'audio pour notre jeu et trouvais beaucoup de changements en 4.0 très utiles mais notre équipe a eu quelques problèmes de conversion de beaucoup de graphiques. J'espère que cela a aidé! à votre santé!

+0

Ça m'est aussi arrivé, j'ai commencé off sur 3.1 et a fini par tout changer pour être 4.0 – Oofpez

3

Oui. Le monde a évolué. XNA 3.1 est déjà redondant.

Il y a Major Architectural, API et sous les changements de capot pour 4.0. Les changements sont importants, notamment en ce qui concerne le rendu. Il vaut mieux utiliser VS2010 Express et XNA 4.0 que VS2008 Professional et XNA 3.1.

+0

Ceci est la réponse correcte, XNA3.1 a été remplacé depuis plus d'un an maintenant, vous ne pouvez plus l'utiliser (plus) pour la Xbox, WP7, et aucun des concours . L'API de rendu a été beaucoup plus simple, beaucoup de bugs avec les importateurs ont été écrasés.J'ai utilisé XNA 4 sous VS Express et plus tard VS Pro, et il y a seulement quelques petites choses (comme le profileur) qui me feraient rester en utilisant VS Pro si je devais choisir. Je choisirais toujours XNA4 + VS Express sur XNA3.1 + VS Pro. –