在全息空间使用XAML

3

我目前正在尝试将一些用户界面添加到我的全息应用程序中。

我的整个应用程序都是使用DirectX编写的,我不会使用Unity。

该应用程序的主要功能是在全息空间中显示3D体积,并与手势(例如旋转和平移)进行交互。

改进交互的一个想法是创建一些浮动窗口,以添加高级操作和功能。

在完美的世界里,我希望能够在我的浮动窗口(它们将是浮动平面或广告牌)中绘制一个使用XAML编写的界面,或者直接由一些Windows.UI.XAML.UIElement渲染器渲染。

因此,基本上我想将XAML元素渲染为Texture2D,并尝试执行以下操作:

await CoreApplication.MainView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
{
      RenderTargetBitmap renderBitmap = new RenderTargetBitmap();
      await renderBitmap.RenderAsync(PanoramicImage);
      XamlPixel = await renderBitmap.GetPixelsAsync();
});

问题在于,RenderTargetBitmap.RenderAsync阻塞了无限期,我无法调用GetPixelsAsync函数。
你们有什么想法吗?
提前感谢。

无法重现您的问题。您的“PanoramicImage”是什么?我使用了一个网格进行测试。还需要提供更多关于环境的信息。 - Sunteen Wu
我的PanoramicImage也只是一个网格,但你是否在HolographicSpace中使用它?(使用Hololens设备的UWP) - Barklight
1个回答

2
我在使用DirectX为UWP HoloLens应用程序工作了相当长的时间。 我们通过Direct2D解决了“UI问题”...您可以将自制纹理呈现到渲染目标上,然后将其用作UI元素的着色器资源视图。我认为即使使用调度程序,“现在”也没有办法在全息空间中呈现XAML控件。因此,我认为您需要编写自己的UI元素。
微软描述的唯一使用XAML控件的方法是在全息空间和正常模式之间切换: Microsoft Viewmodel

1
没有解决方案,我还是做了同样的事情... 无论如何谢谢 :D - Barklight

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接