如何在运行时更新纹理

时间:2019-01-24 15:00:47

标签: c# xaml directx sharpdx

我正在开发HoloLens应用程序。在此应用程序中,我希望能够渲染网站并移动其位置。 我已经做了很多工作,我有一个带有Webview的XAML应用程序,可以呈现该网站。在此XAML应用程序中,我运行了应该显示它的DirectX应用程序。

我认为这将是困难的部分,但是我似乎无法弄清楚的是如何在运行时更新多维数据集的纹理。 我调整了spiningcube示例的模板以显示纹理,而不是附带的彩虹。我想用从Webview获得的字节数组替换此纹理。

我在DirectX UWP模板中的SpinningCubeRenderer更新方法之后使用它

GCHandle pinnedArray = GCHandle.Alloc(newTextureBytes, GCHandleType.Pinned);
IntPtr pointer = pinnedArray.AddrOfPinnedObject();
SharpDX.DataBox box = new SharpDX.DataBox(pointer);
//updatingTexture = new Texture2D(pointer);

deviceResources.D3DDeviceContext.UpdateSubresourceSafe(ref box, textureResource.Resource, 1);
pinnedArray.Free();
newTextureBytes = null;

TextureResource是对多维数据集上当前纹理的引用。我想适应新的纹理。

我找不到有关如何使用UpdateSubresourceSafe的明确来源,经过多次尝试,我最终收到了损坏的内存警告。 谁能帮助我开始在运行时如何交换纹理?

0 个答案:

没有答案