转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=3157

去年我曾经尝试过把KlayGE嵌入其他GUI框架,当时试验的是MFC。现在,为了更方便地使用和开发GUI部分,我选择了WPF。

由于WPF是C#的,这里必不可少需要跨语言调用。我使用的方法是,把KlayGE和主窗口需要的东西包装到一个dll中,导出成纯C接口。在C#中用Dllimport引入使用。这样只需要2个工程就能完成任务。WPF的界面上内嵌了一个WinForm的窗口,可以拿到HWND,就能用来初始化KlayGE。这么做虽然没有D3D控件来得方便,但能避免多次拷贝带来的性能损失。

有了WPF的支持,把ModelViewer这样的工具转到WPF就成了顺理成章的事情。新的工具叫做MeshMLViewer,可以用来查看MeshML格式的模型。使用和修改起来比以前自画界面来得方便。

MeshMLViewer

另外,组员林胜华前一段提交了一个基于Qt的材质编辑器,也已经移植到了WPF上。可以打开MeshML模型,用所见即所得的方式编辑其中任何一个材质,并保存到新文件中。

MtlEditor

这次的尝试,摸索出了一套KlayGE和其他GUI系统结合的框架和数据交换方式。即便以后需要换成别的GUI系统,也不是难事。这个版本有了这两个基于新GUI的工具。以后还将会有更多工具加入进来。