Да. Вы используете D3DImage
, текстуру (SharpDX
или SlimDX
) и Surface
. Вам необходимо создать текстуру вне приложения и обновить ее содержимое с помощью видеодрайвера или другим способом. В WPF вы создаете D3DImage
:
Texture = new Texture(Device.DeviceEx, width, height, 1, Usage.RenderTarget, Format.A8R8G8B8, Pool.Default, ref handle);
Очень важно, чтобы вы были Format.A8R8G8B8
(это ограничение WPF):
using (var surface = texture.GetSurfaceLevel(0))
{
var handle = surface.NativePointer;
Lock();
SetBackBuffer(D3DResourceType.IDirect3DSurface9, handle);
Unlock();
}
А после каждого обновления фрейма нужно только
Lock();
AddDirtyRect(new Int32Rect(0, 0, PixelWidth, PixelHeight));
Unlock();
Лучше, если вы поместите свой D3DImage
в отдельный Dispatcher