I'm about to stop my game-project in XNA because from what I can gather it's development is coming to an end (and it's already behind current technology). Therefore, I need to adopt a new framework or API.

I have just spent 2 days looking at C++ and decided it's really not for me - however I do find the raw access to DirectX appealing. SharpDX sounds like a good place to start, but it has no documentation and no code comments. I feel like it's not quite ready for use.

I'm interested in the opinions of people that have used either or both of these frameworks, to help me decide for sure which one I should learn? Thanks for any advice.

  • 1
    \$\begingroup\$ Very conversational question :). SharpDX is probably as mature as SlimDX because it is generated directly from the headers - as such, he got 100% of DirectX wrapped immediately. Both libraries are essentially the same; so you can just use the SlimDX samples for SharpDX. \$\endgroup\$ Commented Nov 14, 2011 at 14:25
  • 1
    \$\begingroup\$ It's possible that your reticence to pick up C/C++ is the actual problem in terms of excitement. As long as you stay at the managed level, you're never gonna get at the real meat, IMO. This from someone who for a long time swore by managed languages, in spite of being formally trained in C++. Just an observation. Don't avoid C++ too hard. It will certainly limit your options in this industry if you do, while the reverse is definitely not true, as a matter of fact it gives you a solid entry point into other industries (medical, financial, defense). Average pay's a lot better over there, FYI. \$\endgroup\$
    – Engineer
    Commented Nov 14, 2011 at 14:36
  • \$\begingroup\$ I really am interested in DX, and even though I may end up porting my project to either Slim or Sharp I am certainly hearing what you're saying. And it would probably serve me well to keep learning C++ so that I can overcome that discomfort. I'd like to think that 12 months from now if I was in a position where I needed to use C++ / Direct X then I could choose to do that, if it's the right tool for the job. \$\endgroup\$ Commented Nov 14, 2011 at 15:21

1 Answer 1


I'm the author of SharpDX, so my advice is going to be biased, but I would like at least to respond about some of your concerns.

About SharpDX documentation, the current state is very limited, as I have been working so far to bring the whole DirectX API accessible from .NET and new Win8 OS. As I'm closed to finish on this side, I'm working on providing a full website and some articles to explain key concepts of SharpDX, and how you can get the best of it. Also, keep in mind that this project is mainly to bring DirectX to .NET, so It is still a low level API. So it requires you to dig a little bit into the behavior of the C++ API in order to understand how it is working. Fortunately, almost every single method in SharpDX does map to a single method in the DirectX API, so It is easy to check how to use a method by checking DirectX API. The documentation system that will be available with SharpDX 2.0 final will provide a way to find a SharpDX API from a DirectX name and vice-versa.

Is SharpDX ready to be used for developing a game? In short, Yes.

First of all, I have been hired by a Japanese company to participate to the development of a new 3D engine in C#, and we are using SharpDX for the rendering backend on Windows.

Secondly, I have received lots of private mails from developers from companies that are using SharpDX to develop multimedia application (ranging from games, level editor, online photo publishing...etc.). Some of these customers are quite big (Unfortunately, I can't cite them).

Lastly, some public open source projects are using (or going to use) SharpDX for their main backend rendering. For example, Delta Engine is already using SharpDX for its Direct3D11 rendering (that will be available also for Win8). Upcomming ANX project (an open-source XNA successor) is also using SharpDX for the rendering, gamepads and audio management.

But SharpDX is just a step on the road to build a game engine, and then a game. Because the API is low-level, you can't expect to have the same kind of high-level features you were used to with a framework like XNA. But with a minimal framework, you could do lots of things.

Also, you could consider to use a well established product like Unity to develop portable games in C#.

  • 1
    \$\begingroup\$ +1 for ANX. Really exciting as I really love the simplicity of XNA (I quickly gave up with #DX due to the amount of boostrap code required). \$\endgroup\$ Commented Nov 14, 2011 at 14:31
  • \$\begingroup\$ Wow, thanks for adding Alexandre, I was just reading some of your posts tonight on your departure from the slimDX team and what you have in mind for SharpDX. It's great to see such focused work, and it's great to have another managed framework, Managed graphics engines are only getting bigger, and I don't think we've seen the full possibility yet. I just hope that the performance issues with Managed code whether they be from call-times or garbage collector behavior can be resolved or minimized to be inconsequential. You're work is certainly adding to that solution. \$\endgroup\$ Commented Nov 14, 2011 at 15:40
  • \$\begingroup\$ There really is a lot of choice. I've downloaded Unity. I've never looked at a game-engine or anything like that before, so it should be interesting to see what it can do, and how it does it. I do have the fundamentals of my project already written in xna and it's somewhere in the vicinity of 5000-10,000 lines of code so I'd like to use that code if i could. But it's still a long way away from complete, so I suppose if I spend a week or two looking at different frameworks and engines it's not a bad investment. \$\endgroup\$ Commented Nov 14, 2011 at 16:48
  • \$\begingroup\$ Had never heard of ANX before this post. Very interested where this is going. And by the way, you might want to update the link on your post to: anxframework.codeplex.com \$\endgroup\$ Commented Dec 12, 2011 at 5:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .