
该示例使用原生 Unity* 插件,通过绕开 SDK 的 C# 层,显著提高显示英特尔® 实感™ SDK 映像数据的性能。映像数据通过图形 API 直接上传至 GPU。
该示例支持 Direct3D* 9、Direct3D* 11 和 OpenGL*,但通过调整后可以支持其如欲了解有关该示例以及原生 Unity 插件的更多信息,请访问此处。

图 1. 在 Unity* 中运行的示例快照。
示例内容
该示例包括:
1、插件源代码
2、使用该插件的示例 Unity 项目
工作原理
Unity 中的原生纹理副本的工作流程如下所示:
1、应用从英特尔® 实感™ SDK 中获取一个 PXCMImage 对象,并使用 QueryNativePointer 函数获取原生 PXCImage 指示器。
2、PXCImage 指示器和目标 Unity Texture2D 指示器均传递至原生插件。
3、该原生插件的回调被 Unity 的渲染器线程调用时,PXCImage 映像的数据将通过相应的图形 API 拷贝至原生纹理。
要求
推荐使用英特尔® 实感™ SDK R5 或更高版本。 可以使用之前的 SDK,但开发人员需要调整 PXCCLR 项目,以支持 QueryNativePointer 函数。
推荐使用 Unity 5.2 或更高版本。 原生插件没有经过之前版本的测试。
Visual Studio* 2013 或更高版本。 之前的版本可以使用,但没有经过配置。
运行示例
该示例包含一个名为 "SampleProject" 的 Unity 项目,展示了如何使用插件显示英特尔® 实感™ 摄像头的色彩流。
请按照以下步骤运行该示例:
1、下载英特尔® 实感™ SDK 版本 – 必须是英特尔® 实感™ SDK R5 或更高版本。
2、更新 SampleProject 的 SDK DLL - 运行 SampleProject 文件夹中的 UpdateSDKDlls.bat,将所需的托管 DLL 从 SDK 拷贝至 SampleProject。
3、构建原生插件 – 打开并构建位于 src 文件夹中的 NativeRSTextureCopy.sln。 后期构建步骤将把插件拷贝至 SampleProject 文件夹。
4、在 Unity 中打开并运行 SampleProject。
集成插件
请按照下列步骤将原生插件集成至当前正在使用英特尔® 实感™ SDK 的 Unity 应用:
1、构建原生插件 – 该插件必须针对应用正在使用的 SDK 重新构建。 打开 Visual Studio 解决方案,面向目标架构构建 Release 配置。
2、将 UseTexturePlugin.cs 添加至项目 – 将 UseTexturePlugin.cs 脚本从 SampleProject 文件夹拷贝至您的项目,并将其连接至场景中的持续游戏对象。 该脚本负责发送原生渲染器回调事件,并为原生插件功能提供界面。
3、将 PXCMImages 传递至插件 – 将应用中对 PXCMImage.ToTexture2D 的调用替换成对 UseTexturePlugin.CopyPXCImageToTexture 的调用。
4、处理 API 特定格式 – 根据图形 API 的不同,纹理可能以垂直翻转的形式显示,或者以反转的颜色显示。 NativeRGBImage.shader 文件展示了如何处理这种格式问题。
5、通知关闭 - 在关闭英特尔® 实感™ SDK Sense Manager 之前调用 UseTexturePlugin.RealSenseShutdown 函数。
重要提示
由于该原生插件链接至特定版本的英特尔® 实感™ SDK,因此切换至不同 SDK 版本时必须重新编译该插件。 另外,请务必面向您打算支持的所有 CPU 架构编译该插件。
QueryNativePointer 函数已添加至 R5 版本的 C# API 之中,以支持访问托管 SDK 对象的底层原生对象。 该示例还适用于之前的 SDK,但需要将 QueryNativePointer 功能添加至已安装的 SDK 中的 PXCCLR 项目。
文章来源:
英特尔开发人员专区