/// <summary> /// Creates Direct3D 9 texture from the specified Direct3D 11 texture. /// (The content is shared between the devices.) /// </summary> /// <param name="renderTarget">The Direct3D 11 texture.</param> /// <returns>The Direct3D 9 texture.</returns> /// <exception cref="ArgumentException"> /// The Direct3D 11 texture is not a shared resource, or the texture format is not /// supported. /// </exception> public Texture GetSharedTexture(Texture2D renderTarget) { ThrowIfDisposed(); if (renderTarget == null) return null; IntPtr handle = renderTarget.GetSharedHandle(); if (handle == IntPtr.Zero) throw new ArgumentException("Unable to access resource. The texture needs to be created as a shared resource.", "renderTarget"); Format format; switch (renderTarget.Format) { case SurfaceFormat.Bgr32: format = Format.X8R8G8B8; break; case SurfaceFormat.Bgra32: format = Format.A8R8G8B8; break; default: throw new ArgumentException("Unexpected surface format. Supported formats are: SurfaceFormat.Bgr32, SurfaceFormat.Bgra32.", "renderTarget"); } return new Texture(_device, renderTarget.Width, renderTarget.Height, 1, Usage.RenderTarget, format, Pool.Default, ref handle); }