I've worked with the Microsoft Foundation Classes(MFC) and now I want to enter the world of game development.But should I start with directX or XNA? I'm hesitant towards DirectX because I feel it would be quite a laborious thing to work with. I'd really appreciate some expert advice on this, Thankyou.


closed as not constructive by MichaelHouse, John McDonald, Anko, Jimmy, Tetrad Apr 19 '13 at 21:48


  • 2
    \$\begingroup\$ "what language/engine/SDK you should learn" questions are explicitly called out in the FAQ as a type of question not to ask here. \$\endgroup\$ – MichaelHouse Apr 19 '13 at 17:27
  • 1
    \$\begingroup\$ @Byte56 I think this can be answered fairly unbiased; both have specific purposes and are directed at different types of users. See my answer, you're free to disagree, though. \$\endgroup\$ – Vaughan Hilts Apr 19 '13 at 17:28
  • 1
    \$\begingroup\$ @VaughanHilts You've provided a good answer. However, I still think the question shows lack of research and can only really be answered by Ghost, because only they know exactly what their end goals are and what their current skills would allow. \$\endgroup\$ – MichaelHouse Apr 19 '13 at 17:35
  • \$\begingroup\$ @Byte5 Yes I do admit I'd not done substantial research myself before posting the question. But I simply wanted a short and concise comparison between of the two, something I was facing a hard time finding. As I've mentioned in the question, I wanted merely any advice more experienced people had to offer. \$\endgroup\$ – Ghost Apr 19 '13 at 17:41
  • \$\begingroup\$ Perhaps in the future it might be better to word the question so that it can be "answered" instead of just given advice. e.g. "What does XNA do for me on top of DirectX" might be better as it's more applicable to the general audience of the internet as opposed to "what should I do" which we really can't answer. \$\endgroup\$ – Tetrad Apr 19 '13 at 21:49

Do you want to learn high level or lower level? Do you want to make games or do you want to learn new tech? PS: XNA is dead but it lives in updates through MonoGame; check them out. It's well worth your time.

XNA and MonoGame are a framework. They allow you to devleop your game with structured utilities and pre-defined classes. This allows you to begin just writing game logic and forget about all the laborour stuff like handling your window, setting up a game loop, timing, effective sprite batch rendering, rendering basic models, setting up an effect framework and the like. Many other quick and easy modular libraries are available as well. You can't say the same for DirectX. If you have to choose between two, and you just want to make a GAME; pick this option if you are comfortable with C# or willing to learn. You'll develop faster without having to worry about everything "under the hood". MonoGame also gives cross compatibility fairly easily which is a bonus.

DirectX is an API to interface with GPUs and Windows. We use it to make games but it's a lot lower level than that; it provides no easy rendering pipeline, resource manager, or matrix transformation utilities. No game loop. If you want to learn it all from the ground up ... this or OpenGL is pretty much where it's at. You can't get much lower than this without stepping into some pretty insane territory. If you're already adept at C++ this might be an option - but if that is the case C# shouldn't be hard to pick up. DirectX is for those who want to roll their own stuff.

The other case where one might want to use DirectX is if they need extremely, highly optimized rendering techniques they need to implement themselves or they need to write a VERY intensive game that C# and XNA fail to complete. If you have to ask this question, though it's probably not the case.

  • \$\begingroup\$ It may be worth pointing out that learning Xna binds one to DirectX9 which is slowly slipping into obsolescence. Whereas learning DirctX itself you would start with DirectX11 which is growing into the future. \$\endgroup\$ – Steve H Apr 19 '13 at 20:15
  • \$\begingroup\$ @SteveH That depends whether you're running on MonoGame or XNA. \$\endgroup\$ – Vaughan Hilts Apr 19 '13 at 20:53
  • \$\begingroup\$ While I agree with general advice I personally don't see how something that is dead can be worth time. If someone is afraid of low-lvl stuff and just want to make a game probably UDK is safer bet (it's sdk for one of the top engines). Even Unity would be better. Then again, question was about XNA vs DirectX only. \$\endgroup\$ – Lufi Apr 19 '13 at 23:06
  • \$\begingroup\$ @Luft The question was focused on XNA vs DirectX; but I did point to MonoGame which is NOT dead. \$\endgroup\$ – Vaughan Hilts Apr 19 '13 at 23:33
