/// <inheritdoc /> internal override GraphicsPresenter CreateGraphicsPresenter(GraphicsDevice device, PresentationParameters parameters) { var backbufferDesc = RenderTarget2D.CreateDescription(device, parameters.BackBufferWidth, parameters.BackBufferHeight, Graphics.PixelFormat.B8G8R8A8.UNorm); // mandatory to share the surface with D3D9 backbufferDesc.OptionFlags |= ResourceOptionFlags.Shared; RemoveAndDispose(ref presenter); RemoveAndDispose(ref queryForCompletion); presenter = ToDispose(new RenderTargetGraphicsPresenter(device, backbufferDesc, parameters.DepthStencilFormat, false, true)); // used to indicate if all drawing operations have completed queryForCompletion = ToDispose(new Query(presenter.GraphicsDevice, new QueryDescription { Type = QueryType.Event, Flags = QueryFlags.None })); // device context will be used to query drawing operations status deviceContext = ((Device)presenter.GraphicsDevice).ImmediateContext; if (!element.IsDisposed) { element.SetBackbuffer(presenter.BackBuffer); } return(presenter); }