2

我已经在 C++ 中使用 Direct3d 11 开发了一个简单的图形引擎。我决定尝试构建一个 GUI 只是为了好玩,在阅读了一些关于 WPF 的内容之后,我真的很喜欢它。问题是,我不确定我想做的事情是否可能。

我想做的是在 WPF 应用程序中加载我的引擎 DLL,并在 WPF 窗口的一部分内使用 DX 设备。基本上,我想做的类似于地图编辑器(其中主窗口有一堆控件和一个包含渲染区域的子窗口 - 设备),但我不想将我的引擎转换为 XNA将已经工作的 C++ 代码与 WPF 一起使用。那可能吗?

另外,我只是为了练习用 Win32 创建一个窗口并将设备附加到它。在设备创建时将窗口 HWND 分配给设备是一件简单的事情。我假设它与 WPF 窗口相同,还是我错了?谢谢阅读 :)

编辑:忘了提到我是 C# 的完全新手,但我知道你可以导入 C++ DLL 并使用它的功能,我只是不确定设备 - wpf 窗口交互。

4

3 回答 3

1

WPF 支持嵌入 D3D 表面。

从这里开始http://msdn.microsoft.com/en-us/library/system.windows.interop.d3dimage.aspx

于 2014-10-10T11:16:31.260 回答
0

WPF 主要用于托管代码。托管代码意味着大部分事情都由垃圾收集器处理。正如我从您的帖子中看到的那样,您想要集成非托管代码的 C++ dll。在 WPF 中使用 C++ 库并不是那么简单,但并非不可能。C# 提供了许多其他方面来处理这些场景。

您将不得不了解互操作性和非托管代码。看看下面的链接: 示例项目

于 2013-08-20T08:47:06.593 回答
0

对于 WPF/D3D11 互操作,请查看由 Microsoft 工程师编写的WPFDXInterop 。这允许您在 WPF 窗口中拥有一个 D3D 渲染目标,并进行适当的交互。链接中有一个示例项目。

于 2017-04-11T13:33:50.467 回答