Mogre and WPF         Information and links for WPF interaction
Print


WPF

 
WPF(external link) (Windows Presentation Foundation) is a modern SDK created by Microsoft for building GUIs in Windows. Many powerful Windows applications today, including Visual Studio 2010 and later, are built using WPF. WPF makes it easy to create sophisticated GUI controls that are composed of other controls. It also has support for animation, styling, and data binding. It optionally supports a declarative UI layout through a XML format called XAML.

UI toolkits for games are often simpler and less featureful than desktop-grade UI toolkits. Incorporating WPF into a Mogre application allows a developer to have a sophisticated UI and leverage the vast wealth of WPF resources available.

Example screenshoots:




Methods of Combining WPF and Mogre

 
There are several ways of using WPF and Mogre together. Note that most are in an experimental state.
Here are the possibilities:

Mogre In WPF

 
D3DImage(external link) is a WPF control that shows a Direct3D texture inside WPF. It can be set to use a texture that Mogre renders to.

Pros:

  • The result is a fully interactive WPF application with all WPF features supported.
  • The Mogre scene can be partially transparent, with WPF elements behind it. Partially transparent WPF elements can be placed on top of the Mogre scene.

Cons:

  • WPF controls the rendering loop
  • WPF's rendering loop is locked at Vsync (e.g. 60FPS)

 
Approaches to implementation:

  • Single vs Double buffering
  • Timing of Ogre rendering
    • CompositionTarget.Rendering event
    • DispatcherInactive event
    • DispatcherTimer
    • Timer
    • Loop in separate thread

 

WPF on Mogre (Overlay technique)

 
This approach takes two Windows windows: the top is mostly transparent and contains some WPF controls, while the bottom is a typical Mogre window. The positions of the two windows are synced, and input from the user can go to either window.

Pros:

  • Mogre Rendering rate is not constrained to WPF rendering, as it is in the 'Mogre In WPF' approach.

Cons:

  • It can be tricky to cleanly keep two windows in sync, with input working nicely between the two.

 

WPF in Mogre

 
Capture a screenshot of individual WPF visuals and render them as textures onto entities in Ogre or Mogre.

Pros:

  • You can position GUI elements in 3D space as Ogre Scene Nodes
  • You have full control over when WPF is rendered to an Ogre scene, which might facilitate high performance scenarios.

Cons:

  • It is up to you to arrange WPF controls on the screen. (Perhaps this is simpler if you capture an entire WPF window.)
  • It is up to you to handle input to make the WPF elements interactive. (Not an issue if you only use WPF as a HUD that requires no input.)
  • No open source implementation is known that provides interactivity.

Interaction with Mogre

 
... how interaction works (Add both ways, which was describes by Hormis) ...

Example projects

 

See also

 
Further information

Forum threads:

 
WPF + Direct3D Performance Tips

 
WPF Performance Tips

 
Other Technical Information

 
Also useful

 
GUI alternatives

  • Miyagi - Pure C# GUI system
  • MyGUI - This GUI system has a .NET wrapper, which can be used for Mogre
  • GUI - An overview for Ogre GUI systems


Contributors to this page: Meharin146 points  and Beauty14565 points  .
Page last modified on Saturday 19 of May, 2012 01:09:31 UTC by Meharin146 points .


The content on this page is licensed under the terms of the Creative Commons Attribution-ShareAlike License.
As an exception, any source code contributed within the content is released into the Public Domain.