Как обновить текстуру во время выполнения - PullRequest
0 голосов
/ 24 января 2019

Я работаю над приложением HoloLens.В этом приложении я хотел бы иметь возможность отображать веб-сайты и перемещать их позиции.У меня уже много этого работает, у меня есть приложение XAML с веб-представлением, которое отображает веб-сайт.И из этого приложения XAML я запускаю приложение DirectX, которое должно отображать его.

Я подумал, что это будет трудная часть, но я не могу понять, как обновить текстурукуб во время выполнения.Я адаптировал шаблон примера вращающегося куба, чтобы показать текстуру вместо радуги.Я хотел бы заменить эту текстуру на байтовый массив, полученный из веб-вида.

Я использую его после метода обновления SpinningCubeRenderer, который в шаблоне DirectX UWP

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, и после многих попыток у меня появилось предупреждение о повреждении памяти.Может ли кто-нибудь помочь мне начать с того, как поменять текстуру во время выполнения?

...