XNAとそのスムーズな学習について学び始めました。しかし、4.0ではなく3.1を学んで、自分の足を撃っているのだろうか?
私はまた、Microsoftがこの問題に明らかに対立していることも知っています。更新する回数が増えるほど、販売するVisual Studioのコピーも増えます(Expressは無料ですが、一部はProになるでしょう)。したがって、MSの従業員からの「今すぐ大規模な新機能をアップグレードする」タイプのブログの行の間を読む必要があります。
私は何が新しいのかを知っています: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/、例えば、これはリーマー・ツットと比較して理解しなければならなかったものです:
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);
}