private void EnsureRenderTarget() { if (_renderTarget == null) { _renderTarget = new RenderTarget2D(GraphicsDevice, (int)ActualWidth, (int)ActualHeight, false, SurfaceFormat.Bgra32, DepthFormat.Depth24Stencil8, 1, RenderTargetUsage.PlatformContents, true); var handle = _renderTarget.GetSharedHandle(); if (handle == IntPtr.Zero) throw new ArgumentException("Handle could not be retrieved"); _renderTargetD3D9 = new SharpDX.Direct3D9.Texture(DeviceService.D3DDevice, _renderTarget.Width, _renderTarget.Height, 1, SharpDX.Direct3D9.Usage.RenderTarget, SharpDX.Direct3D9.Format.A8R8G8B8, SharpDX.Direct3D9.Pool.Default, ref handle); using (SharpDX.Direct3D9.Surface surface = _renderTargetD3D9.GetSurfaceLevel(0)) { _d3DImage.Lock(); _d3DImage.SetBackBuffer(D3DResourceType.IDirect3DSurface9, surface.NativePointer); _d3DImage.Unlock(); } } }