June 23, 2005

What Managed DirectX Needs To Succeed

First off, I like Managed DirectX. I think it's an efficient, coder-friendly multimedia development tool. However, I believe that it needs a few things in order to even make a dent in the market share for OpenGL or even non-managed DirectX.

1) Documentation. I don't care if it's C# only, but the documentation needs to be brought up to C++ standards. I shouldn't have to know all about normal DirectX 9 to use Managed DirectX. When I have to keep jumping back and forth between the Managed and Unmanaged documentation to find the info I need, the docs have failed.

It also doesn't help when every other topic in the documentation reads like a discontinued product. If you take a look at the DirectX SDK/Namespaces topic, 4 of the 13 topics have the following warning:
Warning: Microsoft DirectDraw (or other item) has been deprecated. Deprecated components of DirectX 9.0 for Managed Code are considered obsolete. While these components are still supported in this release of DirectX 9.0 for Managed Code, they may be removed in the future. When writing new applications, you should avoid using these deprecated components. When modifying existing applications, you are strongly encouraged to remove any dependency on these components.
You don't get that with the C++ documentation. If you don't want us using it, drop the docs.

2) A showcase. You need a Managed DirectX product that you can point to and make people say, "Wow!" Unfortunately, the "Tin Soldiers" series isn't going to cut it. You need a real showcase.

You may remember that Vertigo Software ported Quake II to the .NET Framework to show what could be done with just managed code. Why not take it a step farther, convert that codebase to C# and Managed DirectX, and release it? Give MDX a fast-moving action showcase.

3) Cutting edge. When I look through the DirectX Sample Browser for June 2005, I see tons of samples that don't have managed counterparts. People look to the samples to see what can be done, and if they don't see a managed sample for it, they'll assume that MDX doesn't support it.

Right now, the following are C++ only:
  • DirectSound Amplitude Modulation
  • Antialiasing
  • Blobs
  • Application Configuration Systems
  • Custom Data Formats
  • Direct3D Depth Of Field
  • DirectX Diagnostic Report
  • DirectX Install
  • Effect Parameters
  • Firewall API's
  • DirectSound Full Duplex Filter
  • GetDXVer
  • HDR Lighting
  • Install-on-Demand
  • Instancing
  • Local Deformable PRT
  • Creating a Mesh from a Wavefront .OBJ
  • Multi-Animation
  • Optimized Mesh
  • PIX Plugins (understandable, though)
  • Pixel Motion Blur
  • Post-Processing
  • Shadow Maps
  • Shadow Volumes
  • State Managers
  • Voice Management
  • HLSL Workshop

It adds up. Give us parity, or forget it.

Anyway, back to work.


Mathias said...

Wow, you're wrong as for the "C++ only" things. As for the lack of documentation, I agree.

I did the following in managed DirectX 9:

Direct3D Depth Of Field
DirectX Install
Effect Parameters
HDR Lighting
Optimized Mesh
Pixel Motion Blur

Michael Russell said...

Mathias, read what was just above. I was referring to samples that were included with the SDK, not features within the API.

That said, since MDX9 is deprecated itself now in favor of XNA, not that big of a deal.