Features? Whidbey? Oh My!!


Well, as I’m sure most of you are already aware, the Whidbey beta has been out for a while now, and hopefully some of you have gotten a chance to play with it.  Assuming you have, what features are you seeing that you absolutely love?  What features do you now find ‘missing’ when looking at the Managed DirectX libraries?


In short, now would be the perfect time to suggest features on things you might like to see in a “Whidbey” specific version of Managed DirectX.


( And yes, I’m aware of the loader lock problem using the current MDX assemblies with Whidbey.. So ignore that one.. 😀 )


Edit: Comments seem to be broken.. I’m trying to fix it.. Let me know if it works..

Comments (48)

  1. Ken says:

    Hi,

    I really like the new Intellisense. I don’t like that new tabs show up on the right, it just feels wrong and is disorientating.

    For MDX I’d like to see project templates if possible. Ones that build common shells for you. With a choice of the base game loop you’d like to implement. Templates for 3D, top-down, side-scrollers, and mobile would be awesome.

    A template for delivering these through a browser would be great too! That is the delivery mechanism I’m currently working on for a few new projects. Even if it was something simple that only elegantly checked for .Net 2.0 existance and returned the DX version would be a good start.

    Keep up the good work! Ken.

  2. Bob says:

    I’d like to ignore the loader lock, but it makes developing MDX apps rather annoying, but I assume you guys are working on that :).

  3. Last I tried out the AudioVideoPlayback API, there were lots of bugs, pretty much rendering it quite useless (see <a href="http://www.thecodeproject.com/cs/media/DirectX9_media_playback.asp">this CodeProject article).

    This is unforuntate because it’s one of the first places .NET devs look when trying to do media playback.

    So firstly, if AudioVideoPlayback is still in an unfinished state, get it working 100%. That is my #1 request.

    As far as features go, why not keep improving performance; surely with generics you can do some big optimizations. For example, I believe it was the billboard sample in the SDK that was many times slower than its unmanaged counterpart; this was due to boxing/unboxing during an IComparable’s Compare() call; using the generic IComparable would eliminate the boxing and unboxing in this scenario. I think it’d be a safe bet to say that a large majority of the people using Managed DirectX have performance as a high priority. Can’t go wrong on that one.

  4. Francesco Ferraris says:

    64 bit support will be greatly appreciated!

  5. Ramy says:

    i would like to see the native c++ managed direct3d libraries working, i keep getting cant find header, that type of error, and i put in everything it wants. or maybe its me.

  6. MSDNArchive says:

    I think comments are fixed Tom.

    More managed samples in the SDK would be nice!

  7. Fabrizio Farrelli says:

    64bit support will be nice.

  8. Ken says:

    Hi,

    My comment got lost. I’m rooting for templates. 3D, top-down, side-scroller, and mobile templates. When you create the template it would be cool to have a list of game loops to choose from. Also a template to deliver the game through a browser would be cool. Something that elegantly checks for the existence of .Net 2.0 and also returns what version of DX the user has would be enough.

    Also tell the team to turn tab-scrolling back on so that we have the choice to have new tabs open to the right of everything else. I’ve been digging into the VS.Net IDE to make this happen but havn’t had a lot of luck. You guys have totally disabled this and I can’t figure out how to override it. You’ve totally stumped me but I think you can do it rather quickly. Ken.

  9. Andy West says:

    Anything to make animation blending / multiple animations simpler. I finally figured this out after about a week of sifting through C# and C++ code on the Web and in books. I mostly had to look at unmanaged code for hints, though.

    Also, the documentation still has an unfinished feel to it. When is the "pre-release documentation" notice going away?

    Overall, I’m very happy with Managed DX.

  10. Hello and tanks for the great programing of Mdx

    in the next version of mdx

    Add support for parsing Bvh(Beovision Motion Capture) files

    and then you onlye have to load your (head.x,arm.x,leag.x .. ect.)

    it wood make the life easy that 3dsmax,maya allmost all other programes support export of bvh file.

    Michael Hansen

  11. Marcus Stade says:

    Samples, templates and documentation. The need for proper documentation and more real-world samples is huge. As it is right now, you have to either have been a DirectX developer in the past, or try sifting through newsgroups and unmanaged code for days to figure out how to do whatever it is you’re trying to do.

    I’m still trying to figure out how to do some rudimentary post-processing at 24+ fps _without_ using pixel shaders…

  12. Russ C. says:

    I want to use (for example) Microsoft.Direct3D.Manager.Adapters to return the D3D adapters on this system … Because I’m lazy I’d like to load the results into a ComboBox that lets me choose which adapter to use …

    The problem is that Microsoft.Direct3D.AdapterInformations’ ToString() returns the namespace, not something usefull like the Description of the Adapter. Even worse, because its sealed I can’t do a simple override, I have to write a wrapping class that exposes the AdapterInfomation.Information.Description as the ToString()

    Basically, can we have some sanity in these helper classes to do things like this, without having to write wrappers and so-on ?

  13. David CATUHE says:

    Supports of generics.

    And a working version of AudioVideoPlayback to render a video on a texture…… 🙂

  14. Easier resource management. Less code to load, texture, and animated meshes.

    🙂

  15. Ivan says:

    1. An MDX Toolbox with standard (UI elements) and advanced controls, code snippets such as:

    – lights (omni/spot)

    – cameras

    – skybox

    2. SDK Samples

    3. More Documentation. A "NOT TO DO LIST" concerning perf issues.

    4. Shader Tool as part of IDE

    5. THE FINAL version of the game loop 😉

    6. Ideally (most probably impossible), MDX’s own GUI kinda like 3DSMAX where u add lights, cameras, objects and then assign actions to them… yeah right 🙂

  16. Fabrizio Farrelli says:

    The most intersting feature of Whidbey is

    custom Debugger Visualizers.

    I will absolutely love a texture (2d and cube)

    and mesh visualizer shipped with mdx, and maybe

    an effect visualizer, a device state

    visualizer, a renderstate visualizer,

    a render target visualizer and a stencil

    buffer visualizer.

    Those tools will greatly improve the workflow.

    Thank you.

  17. Joshua Bair says:

    I second the AudioVideoPlayback texture fix already mentioned. Also, a full implementation of DirectPlay would be nice.

    – Joshua

  18. Zach says:

    More VB samples 🙂

  19. sapropel says:

    mdx is great but you should for now just work on performance and adding better exceptions messages, and not just something like "there was an error" in directxexception.message (actually, i dont have the last sdk, so i dont know if that has been corrected).

    performance is very important, if you want more people using mdx (even professional companies), you have to improve performance, not that it is bad, its rather good actually (but still far from native).

  20. Ken Rubin says:

    How about wrapping up the creation of the Direct3D Device class so that it can be optimally created without having to explicitly query the hardware?

    E.g. Device deviceDirect3D = new Device(controlTarget).

  21. John H. Bergman says:

    How about more info about what is/will be available for the Compact framework.. I love the new IDE when it comes to portable devices and want to write a game for my PDA now!

  22. John says:

    MDX is great as it is.

    A working example of the AVPlayback would be great. Support for DirectShow and Capture would be even better!

  23. Just to repost the best suggestions I have read …

    1: Anything to make animation blending / multiple animations simpler.

    2: ToString methods that return valid info and not just there namespace

    3: Generics!

    4: Easier resource management. Less code to load, texture, and animated meshes.

    5: More Documentation. A "NOT TO DO LIST" concerning perf issues.

    6: Shader Tool as part of IDE for HLSL. with intellisence / preview window and the works etc.

    7: Custom debugger wizards for whidbey I will absolutely love a texture (2d and cube)

    and mesh visualizer shipped with mdx, and maybe an effect visualizer, a device state

    visualizer, a renderstate visualizer,

    a render target visualizer and a stencil

    buffer visualizer.

    8: wrapping up the creation of the Direct3D Device class so that it can be optimally created without having to explicitly query the hardware? E.g. Device deviceDirect3D = new Device(controlTarget). IE: MORE ABSTRACTION

  24. Do you have wishes for managed DirectX for Visual Studio.NET 2005? You are in luck. Tom Miller’s put…

  25. santy says:

    Better integration with Avalon. Atm, need to do very ugly things ( like WindowHelper in Form ) in Avalon to get a HWND. Also, in PresentParameters there is a System.Windows.Form.Control reference, so I need to reference assembly System.Windows.Forms ( which is bad in a PURE Avalon app ). Pls remove the PresentParameters.DeviceWindow property and only use PresentParameters.DeviceWindowHandle, so I can skip the System.Windows.Forms.

    thx

  26. mikrogen says:

    1. Better description of exceptions

    2. Debug support for MDX in IDE (visualizers, highlighting shader syntax or any shader tool, toolbox, wizards..

    3. Actual MDX library versions are pain! All (Summer, April, June) is 9.0c, libraries are not backward compatible and reliable release of MDX program is almost impossible!

  27. Jason says:

    seriously, if you cant tell from my title..

    Documentation! I played with the current MDX stuff, and oh my.. is it awfull.

    Sample code so you dont have to buy a $50 book would be nice too.

    Also, Exception handling! the MDX wrapper over the native stuff is horible about throwing exceptions with meaningful messages.

  28. Exabyte256 says:

    I’d like a mesh format documentation or at least a loader that isn’t so.. picky about the meshes.

    I can’t write an exporter for any programs because it just complains about the section which states vertices that overlap. No matter what kind of order I arrange them, it just shows an error message.

  29. jc says:

    I’d like to see a free 3D modeller built into whidbey which has the potential to create .x files and HLSL .fx files. I think it would be a great feature for the IDE. It has many possible implementations, even beyond the MDX world.

    Imagine having a true object, with properties, and a visual representation.

    For example:

    Create a mesh of a mean looking Dwarf. Assign the mesh some properties; hair color, eye color, strength, wisdom, etc. and have the power to "Make Dwarf Class" Boom a dwarf class is built which you can now add to any of your existing projects.

    Dwarf dwarf = new Dwarf();

    dwarf.Mesh = "@:\dwarf.x";

    dwarf.HLSL = "@:\dwarf.fx";

    dwarf.HairColor = RGB(255,100,30);

    dwarf.EyeColor = RGB(255,300,50);

    dwarf.Strength = 35;

    dwarf.Wisdom = 58;

    This of course would be a library project so you would end up with Dwarf.dll, which contains the meshes, fx files, and base properties of a dwarf class.

  30. Ramy says:

    Some sort of HLSL intelisence, or documentaton on the available instructions in the HLSL ( or shader modules).

  31. I think what I have come to realize over the years of using directx (since dx5 using patrice scribe’s third party *.tlb files for vb) is that the documentation only describes what the individual Classes/methods of the dx api do. What the documentation does not do is tell you is how to best make use them.

    I personally am waiting for longhorn to ship to see what kind of performance gains it will have over GDI. I would love to just be able to use pure .net framework winodws forms code to create a game but it’s way to slow for that.

  32. Mr eZ says:

    I would like to see generics in all thier glory, especially when it comes to list and sorting. It would be nice to extend the refactoring/code snippets in VS2005 for common repetitive tasks in MDX.

  33. jdarpinian says:

    For whidbey-specific features, debugging visualizers and generics top my list.

    A more general feature: Instead of using the generic "error in the application" message all the time, using the last few messages written to the debug console by DirectX would be awesome, so you don’t have to turn on very slow unmanaged debugging to see them. They are usually quite accurate and informative when using the debug runtime. I guess it might be tough to access them from managed code, but perhaps the unmanaged guys could provide a hook for you to get at them? It would probably be the single best change you could make for improving beginners’ experiences with MDX.

  34. NyaRuRu (MVP) says:

    Though Debugger Visualizers have already been mentioned, I would like to say DebuggerDisplayAttribute is light and useful.

    Also, I’m interested in CLR 2.0 "reliability" features; SafeHandles, CriticalFinalizer and ConstrainedExecutionRegions.

    For example, it seems almost all P/Invoke Functions in CLR 2.0 have ReliabilityContractAttribute like this:

    ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)

    So I guess Microsoft BCL team has an internal guideline for the usage of Unmanaged Resources and if it is so I think it is reliable for the implementation of Managed DirectX.

    Anyway I hope Managed DirectX will be successfully integrated with the new .NET world.

    Thanks.

  35. dxFoo says:

    I’m sure there’s a ton that can be improved, as much as your book. However, focus on making 1.1 apps run smoothly with your 2.0 version. Last thing I want is Microsoft to again go crazy with their ideas breaking past software. Good luck.

  36. dxFoo says:

    By the way, please work on managed documentation before you start adding more features.

  37. Kurra says:

    I have just install a game called Re-Volt and when I try to run it, the computer says no zbuffer. What could be the problem.

  38. Paul says:

    1. VB Documentation

    2. The capabilties that exist(ed) in the now depricated DirectPlay.

    3. VB Documentation

    4. VB Samples

    5. VB Documentation

  39. Nick Winters says:

    These have been mentioned, but I’ll post here to second them.

    1. A Widget library

    2. More descriptive exceptions

  40. Brandon Bloom says:

    This comment belongs attached to the last word on the render loop post, but commenting is dissabled for that post. I know you must be bored to death with the topic, but it is a *VERY* important one.

    Please include include the necessary code to implement this ultimate render loop in the official Microsoft assemblies as many developers (myself included) may wish to avoid any native methods in their code for security and potential portability concerns.

    One great addition to future versions of the managed libraries would be a replacement for Application.Run, such as Direct3dApplication.Run, which could implement this render loop by accepting an IDirect3dWindow which extends IWin32Window (or whatever it is) and provides a DoFrame method. At the very least, please include this render loop explanation in the documentation.

  41. Catalin Pop says:

    1. Separate SDK for MDX wihout saples or documentation for unmanaged part :), smaller, lighter

    2. Shader visaliser with integrated editor would be nice

  42. Brandon Bloom says:

    Design-time support! Please!

    TypeConverters would be extremely welcome for Matrix, Quaternion, Vector3, et al.

    You could look at the source for System.Drawing.Point and System.Drawing.PointConverter to see just how easy it would be to provide these TypeConverters.

    Thanks!