Endless258

 

I'm in the process of choosing 3D dev platform for a non-game desktop application. I've decided to use Direct3D (not OpenGL) because the application will be developed with C# 2005. I prefer to use C# instead of C++ Direct3D if possible. But I'm very confused of which is the right direction.

Basically, the application renders 3D objects in a window and allows manipulation of those objects; it should be able to show different views of a 3D scene on areas of a printed page.

Any suggestion is appreciated. Thanks.

 



Re: Game Technologies: General Native Direct3D or MDX or XNA?

Canuck1

Well, if you're going to be adding Menus, Controls, etc. to your program, I would go with MDX over XNA since XNA doesn't support form designers. I would also say that MDX is a better choice than Native DirectX/C++ since it is much easier and quicker to develop programs with. And since your program isn't some high-end game with a lot of demanding features where every fps counts, the 98% speed of MDX compared to Native DirectX shouldn't be much of an issue for you.

Hope that helps.





Re: Game Technologies: General Native Direct3D or MDX or XNA?

Endless258

Thanks Canuck1 for your reply.

But I saw that MDX 1.1 is in sustained mode, 2.0 beta is dead. Consideringthe application can last for several years. It's better choose the right tool in the beginning rather than doing migration later, right

The reason I put these 3 togather is to choose something easy to begin with and last longer. Native Direct3D seems the safest, but hard to use. XNA is in the first release. Will it be the same as MDX Also, I am not sure whether XNA can do all the jobs, like printing.

The original application uses OpenGL. It treats a printer DC and Screen DC the same way. So there is no problem for printing. I wonder how Direct3D/XNA deal with this





Re: Game Technologies: General Native Direct3D or MDX or XNA?

Wessam Bahnassi

You can also use native D3D9 with .NET through C++/CLI which is a very powerful combo for editor-like programs.




Re: Game Technologies: General Native Direct3D or MDX or XNA?

Pieter Germishuys

I concur with everything that was said,
Using Managed DirectX makes alot of things a bit easier than using native, with that said, you may feel more comfortable with native DirectX and C++ and ultimately you will have to make the choice, the right choice is the one you make and the language and API flavour you feel more comfortable and confident with.





Re: Game Technologies: General Native Direct3D or MDX or XNA?

Endless258

Great!

It seems C++/CLI is the right way to go. I'll start to learn Direct3D rather than spending time on XNA.

Please allow me to ask another question. Now that D3D10 is released, should I choose it over D3D9 The latest should be the best, right I am thinking it will be easier to upgrade if I choose the latest version. As for functionality, either is fine.





Re: Game Technologies: General Native Direct3D or MDX or XNA?

Canuck1

The only problem with developing your program in D3D10 is that no one owns a computer that supports it in hardware mode at the moment. However if you're going to be working on it for several years I guess that won't be too much of an issue. But don't think that just because you want to work with D3D10 that you can't use C#: http://www.mdxinfo.com/articles/mdx10.php

Hope that helps.





Re: Game Technologies: General Native Direct3D or MDX or XNA?

Endless258

Alright. I'll stick to native D3D9 for now. I need to spend quite some time on it before I can ask another question.

Thanks for everyone's support.

Happy holidays!





Re: Game Technologies: General Native Direct3D or MDX or XNA?

mseare

Wessam,

Do you have any links / advice for doing this I'm looking into interfacing with a native D3D9 application using C++/CLI along with some C# wrappers.

For example,

Native, Unmanaged C++ Managed C++/CLI C#

RenderingEngine ManagedRenderingEngine ViewerApplication

Cheers!

Michael





Re: Game Technologies: General Native Direct3D or MDX or XNA?

Wessam Bahnassi

I don't have links unfortunately. But the advice here is to keep Managed-Unmanaged switches as minimum as possible. The biggest mistake is to loop on a managed array that contains elements needed during rendering with native code. A good way to do it is to have your managed layer only add elements to a native array that will be later looped on when rendering with the native engine.
You can do your UI stuff in C++/CLI perfectly without any missing features. But you may also just expose managed classes with C++/CLI and allow other .NET languages to consume them and use them for 3D rendering.




Re: Game Technologies: General Native Direct3D or MDX or XNA?

mseare

Wessam Bahnassi wrote:
I don't have links unfortunately. But the advice here is to keep Managed-Unmanaged switches as minimum as possible. The biggest mistake is to loop on a managed array that contains elements needed during rendering with native code. A good way to do it is to have your managed layer only add elements to a native array that will be later looped on when rendering with the native engine.
You can do your UI stuff in C++/CLI perfectly without any missing features. But you may also just expose managed classes with C++/CLI and allow other .NET languages to consume them and use them for 3D rendering.

Thanks, Wessam. I appreciate your input. I think I'm going to avoid most of the problems you point out because I don't plan on passing render data from the Managed part to the Unmanaged part. Essentially, the application is a viewer. The Managed part will be the UI where the user might request to load and view a mesh and/or an animation. The desired mesh filename will be passed to the Unmanaged code, which will load and render the data in the file. The user can do some tweaking of the data (say a light setting or an animation blend value, etc.) via the UI, but most of the low-level work is done in the Unmanaged code.

Anyway, thanks a bunch.