【问题标题】:Unity: How would I create the graphics for some elements in C++ to be used by Unity?Unity:如何为 Unity 使用的 C++ 中的某些元素创建图形?
【发布时间】: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 的原生渲染管道是否可扩展...
  • 其实,它看起来就是这么可扩展的。我添加了一个答案。

标签: c++ unity3d directx


【解决方案1】:

我想我找到了,至少是一个起点。我应该更好地 RTFMed 手册,我的错。

https://docs.unity3d.com/Manual/NativePluginInterface.html

指的是这个项目

https://bitbucket.org/Unity-Technologies/graphicsdemos/src/default/NativeRenderingPlugin/

我希望这对其他人有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 2015-01-10
    • 1970-01-01
    相关资源
    最近更新 更多