Can a DirectX surface be plotted to a WPF control? Can a DirectX surface be plotted to a WPF control? wpf wpf

Can a DirectX surface be plotted to a WPF control?


Yes it can. It's usually quite smooth, because WPF itself is an implementation of DirectX.

See MS' Greg Schechter blog:

Redirecting GDI, DirectX, and WPF applications

You can also have a sample of D3DImage on a surface on WPF from Codeproject:http://www.codeproject.com/KB/WPF/D3DImage.aspx


Yes. You use D3DImage, Texture (SharpDX or SlimDX) and Surface. You need create texture outside your application and update its conent by video driver or by another way. In WPF you create D3DImage:

Texture = new Texture(Device.DeviceEx, width, height, 1, Usage.RenderTarget, Format.A8R8G8B8, Pool.Default, ref handle);

Very important is that you foram must be Format.A8R8G8B8 (it is restriction of WPF):

using (var surface = texture.GetSurfaceLevel(0))        {            var handle = surface.NativePointer;            Lock();                SetBackBuffer(D3DResourceType.IDirect3DSurface9, handle);                Unlock();        }

And after each updating of frame you need only

Lock();                AddDirtyRect(new Int32Rect(0, 0, PixelWidth, PixelHeight));                Unlock();

It's better, if you will put your D3DImage in separate Dispatcher