我目前正在尝试将一些用户界面添加到我的全息应用程序中。 我的整个应用程序是用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函数。
你们有什么想法吗?
提前致谢。
答案 0 :(得分:2)
我在directx上使用我自己的uwp hololens应用程序工作了一段时间。 我们使用direct2d解决了“UI-Problem”...您可以将自制纹理渲染到rendertarget,然后将其用作ui元素的shaderressourceview。我认为即使是调度员,“现在”也无法在全息空间中渲染xaml控件。所以我认为你需要编写自己的ui元素。
微软描述它的方式,使用xaml控件的唯一方法是在全息空间和普通模式之间切换: