C # với XNA
Vì bạn chưa quen với điều này, XNA sẽ có lợi thế là một nơi rất tốt để bắt đầu. Từ việc tạo một dự án mới đến hiển thị một sprite 2D trên màn hình, phải mất 5 dòng mã:
private Texture2D texture;
texture = Content.Load<Texture2D>("sprite");
spriteBatch.Begin();
spriteBatch.Draw(texture, Vector2.Zero, Color.White);
spriteBatch.End();
Nó không dễ dàng hơn thế này nhiều. Cũng có lợi thế là có vô số mẫu giáo dục có sẵn cho nó.
Vấn đề là yêu cầu hiệu suất của bạn. Nhưng tôi đã xoay sở để vẽ hàng ngàn họa tiết trước đó trong XNA mà không gặp vấn đề gì. Tuy nhiên không có mã trò chơi đằng sau nó, và máy tính của tôi là cao cấp nên kết quả sẽ bị sai lệch. Nhưng với tối ưu hóa cẩn thận, nó có thể sẽ làm việc ra. Vì vậy, đây là khuyến nghị của tôi.
C # với SharpDX hoặc SlimDX
Vẫn ở trong vương quốc C # được quản lý, bạn cũng có thể quay lại một bước và xem xét sử dụng SharpDX , một trình bao bọc được quản lý mới xung quanh DirectX và họ cho rằng nó nhanh hơn khoảng 6 lần so với XNA. Điều đó nên có đủ sức mạnh cho nhu cầu của bạn. Và đó là nền tảng chéo.
Cũng có SlimDX để xem xét.
C ++ với DirectX / OpenGL
Và nếu bạn tiếp tục đi xa hơn theo hướng đó, cuối cùng bạn sẽ đạt được C ++ thuần túy với vương quốc DirectX / OpenGL. Nếu bạn quyết định đi theo con đường đó (mà nhân tiện, sẽ khó đối phó hơn ở giai đoạn này), có một vài điều bạn có thể làm để làm cho cuộc sống của bạn dễ dàng hơn.
Chẳng hạn, bạn có thể sử dụng SDL để tạo cửa sổ cho bạn và chăm sóc đầu vào và FMOD để xử lý âm thanh, cả hai đều thấy chúng dễ làm việc hơn so với các đối tác gốc của chúng.
Tôi cũng không biết ngày nay nó như thế nào, nhưng lần trước tôi làm việc với những thứ này, tôi thấy việc thực hiện công cụ 2D trong DirectX khá dễ dàng nhờ vào lớp D3DXSprite mà IIRC khá giống với SpriteBatch của XNA, trong khi với OpenGL I đã phải thực hiện mọi thứ từ đầu (tức là làm rối tung với các hình tứ giác, các hình chiếu chính tả và thực hiện các đợt).