It seems like WPF was created as the application answer to Adobe's Flash. Silverlight is used for creating web pages. But, can that same functionality be pulled into a standalone WPF application. Scaleform allows Flash to be used within unmanaged C++ games. Can WPF be used to create the same type of interfaces? What I've read seems to make me believe it can. But, I haven't seen any sheetshots of applications that show this kind of interface.
|
|
WPF was created to provide a better way for Windows developers to build GUIs for desktop applications. Silverlight was created as an answer to Flash and re-uses much the WPF API but has a different implementation. In theory you could use WPF to create the GUI for a game, but in practice you probably wouldn't:-
There is a possibility that this situation could be rescued though. There is an open-source re-implementation of .NET called Mono. They have a sub-project called Moonlight which is a re-implementation of Silverlight. With source code available there's a possibility it could be integrated in a similar way to Scaleform and allow you to build GUIs using Microsoft's excellent Expression Blend authoring tool. I don't think anyone has done this yet so there are probably issues to be uncovered, but I'm just throwing it out there as an idea. EDIT: It occured to me after adding this that maybe your interest isn't so much in leveraging authoring tools like Flash Studio or Expression Blend and maybe you just want to be able to draw high-quality 2d graphics fast. In which case there is the Direct2D API that Microsoft added in Windows 7 and then back-ported to Vista. |
|||||
|
|
You can definitely create similar kinds of interfaces in WPF, but integrating them into a Direct3D game is problematic. You can host Direct3D content within WPF (via An alternative, though far from elegant, would be to render your WPF UI in a separate layered window above the Direct3D content, as described here. There are also ways to access WPF's internal Direct3D surface, which would give you a way to host WPF content in an external Direct3D scene (instead of the other way around). However, this is a rather nasty hack and could easily be broken by future WPF releases. Of course, none of this is relevant if you don't actually need to interoperate with Direct3D. Games that don't require complex 3D graphics can certainly be developed completely in WPF. WPF does have some simple 3D facilities at its disposal, though they are generally insufficient for anything beyond primitive shapes with simple textures. It also supports custom pixel shaders, though there are many restrictions (e.g. they must be single-pass effects). |
||||
|
|