Which Lib for DirectX Editor / GUI ?

Started by
7 comments, last by renega_666 11 years, 4 months ago
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

from time to time i find time

Advertisement
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.

Stefano Casillo
TWITTER: [twitter]KunosStefano[/twitter]
AssettoCorsa - netKar PRO - Kunos Simulazioni

You have several options:

  • 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 swig (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 )


[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.
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

from time to time i find time

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.

Stefano Casillo
TWITTER: [twitter]KunosStefano[/twitter]
AssettoCorsa - netKar PRO - Kunos Simulazioni


Where did we say "C#" only? I can't find it.




  • by creating a c++/cli layer (c# only)



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

from time to time i find time

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 .

Stefano Casillo
TWITTER: [twitter]KunosStefano[/twitter]
AssettoCorsa - netKar PRO - Kunos Simulazioni

Personally I'm using Qt, it is easy to hook up your own rendering system in it, and it's a very good GUI toolkit.
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

This topic is closed to new replies.

Advertisement