Sign in to follow this  
~Helgon

Which Lib for DirectX Editor / GUI ?

Recommended Posts

~Helgon    361
Hi, i would like to know whats mostly used for the game editors (I mean the editor to model the terrain, to place objects, set way points, script and so on)

I know that when i used XNA it was possible to render the XNA frame into an ImageField (over a kinda hack.. im not sure anymore how it was done exactly) and then just drag n drop the GUI with the C# WindowsForms editor (in VS).

But how is it done with DirectX? What do people mostly use?

QT
wxWidgets
gtkmm

or is it even possible to do use WindowsForms even with DirectX and C++?

I presume that if the target platform is linux and windows its QT, gtkmm and wxwidgets but what is for example used in an AAA titles like the SC2 Editor, Skyrim etc.

Regards Helgon Edited by ~Helgon

Share this post


Link to post
Share on other sites
kunos    2254
I use WinForm with C# and the native C++ engine exposed using a CLI C++ layer.
The tricky part is the interactions between managed and native, once you are done with those it's all easy on the C# side. I have played with those before so it was really easy to do for this new editor.

The other tech you mention are all valid options even if they don't offer the same "visual" gui building easiness of C#.. but, of course, the integration has no hidden tricks to be learn.

Share this post


Link to post
Share on other sites
renega_666    1162
You have several options:[list]
[*]use a c++ gui toolkit as you mentioned ( I would pick up Qt )
[*]expose your c++ engine to a high level language. This can easily be done by using [url="http://www.swig.org/"]swig[/url] (java, python, c#, ruby) or by creating a c++/cli layer (c# only)
[*]use inter-process communication between your editor and the game ( tcp sockets )
[/list]

[Edit]
Generally speaking, the only things that have to be done to render a scene in an editor is to pass the editor window/panel handle to your c++ engine and call your render function periodically or when the application is idle. Edited by renega_666

Share this post


Link to post
Share on other sites
~Helgon    361
Hi, thanks for the answers.

This C++/CLI layer thing using WindowsForms sounds good but one question. U both mentioned its "c# only". What does that mean?

And do you have maybe a good resource(snippet, tutorial, video ...) which shows me how to directly implement the render frame into a WindowsForm?

Regards Helgon

Share this post


Link to post
Share on other sites
kunos    2254
Where did we say "C#" only? I can't find it.

Once you are in .NET land, you can code it all in C++/CLI, you can use C#, Visual Basic, F#.. and about a dozen more ports of popular languages on the .NET platform.
It wouldn't be a terribly smart thing to do (because C# is the language the entire .NET is built around) but you can still do it..it's the entire point of something like .NET.

Share this post


Link to post
Share on other sites
~Helgon    361
[quote name='kunos' timestamp='1355042242' post='5008739']
Where did we say "C#" only? I can't find it.
[/quote]


[quote name='renega_666' timestamp='1354982680' post='5008513'][list]
[*]by creating a c++/cli layer (c# only)
[/list]
[/quote]

OK what you say sounds nice. I think that's the way i gonna try it.
As i already asked. Do you maybe have a good resource?

Regards

Share this post


Link to post
Share on other sites
kunos    2254
hm not that I know of. For me it was trial and error.. google around for .NET Interop and P/Invoke.. those are the things you'll have to get familiar with to move stuff around. If you use C++/CLI you will have to learn the extensions to the language to interact with .NET .

Share this post


Link to post
Share on other sites
renega_666    1162
[quote]As i already asked. Do you maybe have a good resource?[/quote]

There is an example here:

http://blog.drorhelper.com/2008/11/how-to-render-managed-net-form-using.html

He uses pInvoke but the concepts remains the same: you have to override the OnPaint method and call your native rendering function Edited by renega_666

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this