Ich fange an, XNA zu lernen und es läuft reibungslos. Ich frage mich jedoch, ob ich mir selbst in den Fuß schieße, indem ich 3.1 und nicht 4.0 lerne.
Ich bin mir auch bewusst, dass Microsoft offensichtlich einen Interessenkonflikt in dieser Angelegenheit hat: Je öfter wir aktualisieren, desto mehr Kopien von Visual Studio werden verkauft (ich weiß, dass Express kostenlos ist, aber einige werden Profi). Man muss also zwischen den Zeilen der Blogs vom Typ "MASSIVE NEW FEATURES UPGRADE NOW" von MS-Mitarbeitern lesen.
Mir ist bekannt, was neu ist: http://msdn.microsoft.com/en-us/library/bb417503.aspx , und das scheinen hauptsächlich Telefon-, Schnittstellen- und Videofunktionen zu sein, an denen ich nicht so interessiert bin mehr macht das Kern-3D-Zeug.
Der Knackpunkt ist: Ich habe Visual Studio 2008 Professional bereits und möchte VS 2010 nicht erhalten, wenn es in 4.0 kaum Unterschiede in der Spielprogrammierung gibt.
Hat sich die Welt weiterentwickelt? Wird das, was ich in 3.1 lerne, überflüssig?
Es gibt auch Codeunterschiede in Bibliotheken, aber sie sind nicht wesentlich. Viele davon sind hier zu sehen: http://www.nelxon.com/blog/xna-3-1-to-xna-4-0-cheatsheet/ Zum Beispiel dieses, das ich im Vergleich zu Riemers Tut herausfinden musste:
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);
}
Antworten:
Ich empfehle XNA 4.0 zu verwenden.
Sicher, Sie können wahrscheinlich alles mit 3.1 machen, was Sie mit 4.0 machen können, aber es ist ziemlich weit fortgeschritten. Zusätzlich zu Ihren Referenzen möchten Sie vielleicht auch einen Blick auf Shawn Hargreaves 'Blog werfen, zum Beispiel in diesem Beitrag: Breaking Changes in XNA Game Studio 4.0 . Oder Sie können sich einfach die Monate März, April und Mai 2010 in seinem Blog ansehen, sie sind voller XNA 4.0-Änderungen.
Denken Sie auch daran, dass Sie mit 3.1 an der alten Technologie festhalten werden. Schließlich möchten Sie ein Upgrade auf XNA 5/6 für DX11-Unterstützung oder was auch immer durchführen. Je nachdem, wie groß / komplex Ihr Programm bis dahin ist, kann es einige Zeit dauern, es auf 4.0 zu aktualisieren, da Sie mehrere Änderungen vornehmen müssen.
quelle
Für den Programmierer sind 3.1 und 4 nahezu gleich. Die wichtigsten Änderungen sind das Erstellen eines Geräts und eines Spritebatches. Und wo sich der Content Manager befindet, wird er in ein eigenes Projekt innerhalb der Lösung verschoben. Alles andere ist ziemlich gleich. Diese Änderungen unterscheiden sich nur um wenige Codezeilen. Hinter den Kulissen werden jedoch verschiedene DirectX-API-Aufrufe verwendet.
Um Ihre Frage zu beantworten, schießen Sie sich überhaupt nicht in den Fuß. Die Verwendung von XNA hat sich aus Sicht der Programmierer selbst in den 1.0-Versionen nicht wesentlich geändert.
Es gibt viele Spickzettel im Internet, in denen Sie nach schnellen Antworten zum Konvertieren von 3.1 - 4.0 wie diesem suchen können. Http://www.nelxon.com/blog/xna-3-1-to-xna-4-0-cheatsheet / .
quelle