Original Post
This thread is obsolete. Please visit the SlimDX homepage instead. Why: Around fall of last year, there were a couple events involving the future of Managed DirectX. MDX 2.0 was discontinued, along with assistance from a surprise time bomb. MDX 1.1 is frozen and is essentially our only option for interfacing DX and .NET. XNA rose to "replace" MDX 2.0, but my work with XNA convinced me of two things. First, XNA is an Xbox API that happens to run on PC as a convenience. Second, XNA is a toy right now and will not be useful as a serious development tool for some time. This left MDX developers in an akward place. Yes, MDX 1.1 is supported for several years, but the current state of affairs is not exactly encouraging. Additionally, researching the loader lock problem yielded considerable explanation of why the problem exists, but I was unable to find evidence that the problem is a false positive. That is, every application built on MDX 1.1 may have a non-deterministic deadlock risk due to mistakes in the Managed C++ stuff in .NET 1.1. I'm not really sure if the problem exists or not, but I was not happy with the situation and I have yet to see a convincing technical description of why the loader lock warning isn't a danger. Lastly, there were some design things in MDX that I didn't like. Some were minor issues, some were bigger issues. It was the combination of these three factors that led me to build a replacement library in C++/CLI that would allow me to pull free of this whole mess. The library is somewhat tailored to my specific needs, so I can't reasonably claim that it is suitable for everyone else, or in fact anyone else. However, I felt that it was worth gauging initial interest in the codebase. Status: ALL non-D3D technologies are currently missing from this prototype. I would like to add them eventually, but they're not in right now. As far as the D3D stuff, this library was built by tearing MDX out from under my latest project and replacing it with SlimDX. As a result, I've essentially implemented the subset that I use. There are a few conspicuous omissions. First, the entire fixed function pipeline is missing. Very nearly all of the render states are missing. None of the Get* functions are implemented on the device, and honestly, most of the Set* functions are missing too. There are holes in the math library, particularly when dealing with quaternions and Vector2. There are two specific bits which were omitted by design. First, all of the event stuff is completely gone. Second, resources are not automatically released. If you do not dispose something, it will leak. I don't intend to introduce the event structure. However, I'm still examining the automatic release thing, so that's not nailed down yet. My thinking on this point is that automatic release disables D3D's leak detection and makes it harder to track code mistakes where things were not disposed. However, I do know that some people use automatic release as a crutch and are not disposing at all. One possibility is adding a flag to switch automatic release on and off, similar to how MDX allows you to enable or disable exceptions and events. This thing is a prototype, not a production library. If you need a stable, complete DX wrapper under you, switching to this thing now would be ill advised. Future: There are two possibilities here. One is that people simply don't care. I'm fine with that, and I'll simply continue using the library and filling in stuff as I see fit. The other is that there is substantial interest. In that case, I would like to license out the library under a non-restrictive open source license (possibly LGPL) and make it available at Sourceforge. The hope is that people will be willing to fill things in that they use, and the library will expand to fit people's needs as a result. This only works if people are actually willing to submit patches; otherwise, the library just stagnates. [Link Removed] Again, I originally wrote this for myself. If you don't think it's worth the bother of making it public, feel free to say so. Still, I have seen a lot of complaints about the current state of DirectX and managed code, so I'm curious how many people are actually dissatisfied with Microsoft's choices on the matter and would prefer to work with an open source library. [Edited by - Promit on June 19, 2009 10:04:23 AM]