【发布时间】:2018-12-25 17:42:02
【问题描述】:
首先,我知道“正确”的答案是将所有内容都移植到 C#。请不要打扰发布该答案。这是长期目标。我不需要听到它重述。
我有一个游戏我想移植到 PC 上的 Unity(最初)。它有一个非常繁重的用户界面。我想知道如何在 C++ 中为 UI 创建图形?我的游戏目前使用 GDI 创建对话框,每个对话框都在自己的缓冲区中,然后 BitBlts 到屏幕。
在一个“完美的世界”中,我想尝试将这些缓冲区传递给 Unity,然后 Unity 会显示它们并将任何鼠标/手势事件传递回 C++ 进行处理。这是一个杂物,但比移植所有东西要快得多,并且可以让我做一些原型/测试,看看它是否实用。然后我可以一次将一个屏幕移植到 Unity 或移植我编写的 UI 库。
我确实看到一篇文章谈到了做一些类似的事情,其中 C++ 将纹理推送到 OpenGL 中,然后 Unity 会渲染它们。在我开始破解之前,是否有任何文章讨论了如何在使用 DirectX 的 PC 上执行此操作?
这听起来很简单,但我会很感激一些关于它们之间接口的指针。 unity站点上的文档在界面细节上有点稀疏。
澄清:我的问题实际上是关于我需要在 C++ 中使用 DirectX 做什么才能将纹理发回。我是否需要在 C++ 和 Unity 中初始化 DirectX,是否需要将显示句柄或其他内容连同纹理句柄等一起传递给 C++?是否像调用 C++ 例程返回纹理一样简单?我熟悉如何在 C# 和 C++ 之间进行交流以及 3D 引擎的一般工作方式,我需要从 HDC 填充 DirectX 纹理,并以某种方式将该数据传递回 Unity 进行显示。
拉尔夫
【问题讨论】:
-
从C#调用本机代码通常涉及到
pinvoke,我相信在Mono中有一些支持。 -
谢谢,我了解 P/Invoke,我的问题实际上是关于我需要在 C++ 中使用 DirectX 做什么才能将纹理发回。我是否需要在 C++ 中初始化 DirectX,是否需要将显示句柄或其他内容与纹理句柄一起传递给 C++ 等?
-
我有点怀疑 Unity 的原生渲染管道是否可扩展...
-
其实,它看起来就是这么可扩展的。我添加了一个答案。