Tôi đang bắt đầu học XNA và nó sẽ diễn ra suôn sẻ. Tuy nhiên, tôi tự hỏi nếu tôi tự bắn vào chân mình bằng cách học 3.1 chứ không phải 4.0?
Tôi cũng biết rằng Microsoft rõ ràng có mâu thuẫn về vấn đề: chúng tôi càng cập nhật nhiều bản sao Visual Studio mà họ bán hơn (tôi biết express là miễn phí nhưng một số sẽ trở nên chuyên nghiệp). Vì vậy, người ta phải đọc giữa các dòng của blog loại "MASSIVE NEW TÍNH NĂNG NÂNG CẤP NGAY" từ các nhân viên của MS.
Tôi biết về những gì mới: http://msdn.microsoft.com/en-us/l Library / bb417503.aspx , và đó dường như chủ yếu là điện thoại, giao diện và tính năng video - điều mà tôi không quan tâm lắm - Tôi là nhiều hơn làm các công cụ 3D cốt lõi.
Điểm hấp dẫn là: Tôi đã có Visual Studio 2008 chuyên nghiệp và không muốn nhận VS 2010 nếu có một chút khác biệt trong lập trình trò chơi trong 4.0.
Thế giới đã chuyển sang? Là những gì tôi đang học trong 3.1 sẽ trở nên dư thừa?
Ngoài ra còn có sự khác biệt về mã trong các thư viện, nhưng chúng không phải là chính, nhiều trong số chúng có thể được nhìn thấy ở đây: http://www.nelxon.com/blog/xna-3-1-to-xna-4-0-chcoateet / , ví dụ như cái này mà tôi phải tìm ra so với 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);
}