【发布时间】:2019-02-19 13:44:04
【问题描述】:
我使用 c++ 编写了一个 DX11 渲染器。我现在正在寻找一种为其实现编辑器/GUI 的方法。
由于我非常习惯于 Windows 窗体和 WPF C# 应用程序,我正在考虑将我的渲染器放入 dll 中,从 c# 应用程序加载 dll 并使用它来绘制到表单的定义部分。这甚至可以与托管 c# 应用程序传递的窗口句柄一起使用吗?如果可以,性能如何?
据我了解,由于与 DX11 API 的实际通信仍将直接在 c++ 中进行,而 c# 部分只会告诉 dll 做什么,因此性能损失应该几乎没有。或者这通常是一个坏主意,使用库或 D2D 直接在 c++ 中实现 GUI 是更好的方法。
【问题讨论】:
-
您可能想查看 SharpDX 的代码以获得一些灵感。或者只是简单地使用 SharpDX,如果适合您的需要... ;-)
-
这正是我不想做的,SharpDX 是整个 API 的包装器,这意味着对 API 的每次调用都会产生额外的开销。没人用c#写游戏是有原因的。我只是在寻找一个 GUI 而不放弃直接使用 c++ 的好处。这是一个非常有趣的基准比较:code4k.blogspot.com/2011/03/…
-
啊,好吧,我误会你了。如果您的问题仅仅是关于您是否应该通过渲染器将 UI 渲染为 DX 表面的一部分,或者是否应该在 .NET 中构建 UI,而渲染器只是在该 UI 的面板/表面中渲染场景/模型,那么这纯粹是一种设计和实现选择,具体取决于您想要/需要的 UI 元素和渲染场景/模型之间的功能和交互。没有一个简单、普遍的答案,即一个好一个坏。这是您必须根据所需功能和涉及的开发做出的决定。费用。
标签: c# c++ directx direct3d11