去年我曾经尝试过把KlayGE嵌入其他GUI框架,当时试验的是MFC。现在,为了更方便地使用和开发GUI部分,我选择了WPF。
由于WPF是C#的,这里必不可少需要跨语言调用。我使用的方法是,把KlayGE和主窗口需要的东西包装到一个dll中,导出成纯C接口。在C#中用Dllimport引入使用。这样只需要2个工程就能完成任务。WPF的界面上内嵌了一个WinForm的窗口,可以拿到HWND,就能用来初始化KlayGE。这么做虽然没有D3D控件来得方便,但能避免多次拷贝带来的性能损失。
有了WPF的支持,把ModelViewer这样的工具转到WPF就成了顺理成章的事情。新的工具叫做MeshMLViewer,可以用来查看MeshML格式的模型。使用和修改起来比以前自画界面来得方便。
...