在全息空间中使用XAML

时间:2017-03-27 15:39:43

标签: c# xaml uwp directx hololens

我目前正在尝试将一些用户界面添加到我的全息应用程序中。 我的整个应用程序是用DirectX编写的,我不会使用Unity。

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

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

在一个完美的世界中,我想在我的浮动窗口(可能是浮动平面或广告牌)中绘制一个用XAML编写的界面或一些Windows.UI.XAML.UIElement直接渲染的界面。

所以基本上我想将XAML Element渲染到Texture2D中,我尝试执行以下操作:

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

问题是,RenderTargetBitmap.RenderAsync阻止无限期,我无法访问GetPixelsAsync函数。

你们有什么想法吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

我在directx上使用我自己的uwp hololens应用程序工作了一段时间。 我们使用direct2d解决了“UI-Problem”...您可以将自制纹理渲染到rendertarget,然后将其用作ui元素的shaderressourceview。我认为即使是调度员,“现在”也无法在全息空间中渲染xaml控件。所以我认为你需要编写自己的ui元素。

微软描述它的方式,使用xaml控件的唯一方法是在全息空间和普通模式之间切换:

Microsoft Viewmodel