All of BigEd's points are completely valid and accurate.
However, the challenges have been *mostly* overcome, and the tides are changing...http://create.msdn.com/en-US/
XNA Game Studio really does provide nearly anything you could want to do, resource-wise, with DirectX. And it makes it *super* easy if you are already familiar with .Net coding and C#.
Even without XNA, you certianly can download .Net wrappers for the DirectX API components and write code in .Net (C# or VB) that uses DirectX 9 (and 10 if you want) and does pretty much anything that you as the developer can understand how to make DirectX do!
So I'm not sure what lead you to belive that C# does not have support for DirectX 9, but I assure it does. I have too many development projects that use it! Here's a for instance
This is based on a project started back in .Net Framework 1.1 with DirectX 7, which was simply called Xarcade. The Vengance version (linked here) was redesigned in Framework 2.0 using Visual Basic .Net 2005 and Direct X 9. And I just updated it for the latest DirectX runtimes (though it is still a very rudementary DX implementation for 2D). I also have a couple of projects based on just the DirectSound portion of DirectX in managed code (which I would link as well, but it probably needs the same reference updates that Xarcade needed). But all of these projects require a fair amount of leg-work just to get the required DirectX resources up and running, and then getting efficient use of those resources can be another chore.
So why go through so much leg-work, especially when for the most part, every game you make needs these same core objects? Hence the creation of the XNA Framework. A complete libaray of game objects, with very fast, very powerful, suprisingly simple access to most
(* Edit Actually there may still a few advanced feaures or ways of using shaders and such that aren't implemented, but that you should rarely if ever need) of DirectX and most of the associated hardware features. XNA does so much of the leg-work for you that it is route down which MS is focusing it's game developement. And we are talking about Games for Windows Live, XBox 360 and Windows Phone 7... so modern game platforms.
Of course, this does really make point 1 from BigEd hit home: you are glued to Microsoft if you use C#. Its not entirely true; if you plan for it, you can write something somewhat portable to C++, though you'll still have a number of helper objects to create to complete a conversion. But, you as the developer need to decide whether or not this is actually a problem... If using the XNA Game Stuido means you can develop your game in 1/100th the amount of time (or better), and your single source code compiles and distrubtes on Windows Desktop, XBox 360, and Windows Phone 7, and MS will sell it for you on its Game Marketplaces (doing all the work and taking ~30%), then how bad is it that your game has Microsoft as a requirement?
For established game studios with existing engines and in-house development tools worth thousands of man-hours and immessurable dollars, a switch to something like XNA and C# may not be feasible. Although there are signs that these technologies are being adapted into exisitng C++ toolsets...
But for new developers and development studios, XNA presents a world of possibility and should be explored in-depth before deciding on what development path you should take.
That's my "FWIW" anyway!
This post has been edited by Reedo: Dec 4 2010, 10:44 PM