// - private methods ------------------------------------------------------------- private void StartD3D() { device = new SharpDX.Direct3D11.Device(DriverType.Hardware, DeviceCreationFlags.BgraSupport); d3DSurface = new Dx11ImageSource(); d3DSurface.IsFrontBufferAvailableChanged += OnIsFrontBufferAvailableChanged; CreateAndBindTargets(); base.Source = d3DSurface; }
public void SetRenderTarget(SharpDX.Direct3D11.Texture2D target) { if (renderTarget != null) { renderTarget = null; base.Lock(); base.SetBackBuffer(D3DResourceType.IDirect3DSurface9, IntPtr.Zero); base.Unlock(); } if (target == null) { return; } var format = Dx11ImageSource.TranslateFormat(target); var handle = GetSharedHandle(target); if (!IsShareable(target)) { throw new ArgumentException("Texture must be created with ResouceOptionFlags.Shared"); } if (format == Format.Unknown) { throw new ArgumentException("Texture format is not compatible with OpenSharedResouce"); } if (handle == IntPtr.Zero) { throw new ArgumentException("Invalid handle"); } renderTarget = new Texture(Dx11ImageSource.D3DDevice, target.Description.Width, target.Description.Height, 1, Usage.RenderTarget, format, Pool.Default, ref handle); using (var surface = renderTarget.GetSurfaceLevel(0)) { base.Lock(); base.SetBackBuffer(D3DResourceType.IDirect3DSurface9, surface.NativePointer); base.Unlock(); } }
// - private methods ------------------------------------------------------------- private void StartD3D() { device = new SharpDX.Direct3D11.Device( DriverType.Hardware, DeviceCreationFlags.BgraSupport ); d3DSurface = new Dx11ImageSource(); d3DSurface.IsFrontBufferAvailableChanged += OnIsFrontBufferAvailableChanged; CreateAndBindTargets(); base.Source = d3DSurface; }