Como criar bitmap a partir do Surface (SharpDX)

Sou novo no DirectX e estou tentando usar o SharpDX para capturar uma captura de tela usando a API de Duplicação da Área de Trabalho.

Eu estou querendo saber se existe alguma maneira fácil de criar bitmap que eu possa usar na CPU (ou seja, salvar em arquivo, etc.)

Estou usando o seguinte código para obter a captura de tela da área de trabalho:

var factory = new SharpDX.DXGI.Factory1();
var adapter = factory.Adapters1[0];
var output = adapter.Outputs[0];

var device = new SharpDX.Direct3D11.Device(SharpDX.Direct3D.DriverType.Hardware,
                                                       DeviceCreationFlags.BgraSupport |
                                                       DeviceCreationFlags.Debug);

var dev1 = device.QueryInterface<SharpDX.DXGI.Device1>();

var output1 = output.QueryInterface<Output1>();
var duplication = output1.DuplicateOutput(dev1);
OutputDuplicateFrameInformation frameInfo;
SharpDX.DXGI.Resource desktopResource;
duplication.AcquireNextFrame(50, out frameInfo, out desktopResource);

var desktopSurface = desktopResource.QueryInterface<Surface>();

Alguém pode por favor me dar uma idéia sobre como posso criar um objeto de bitmap a partir do desktopSurface (instância DXGI.Surface)?

questionAnswers(2)

yourAnswerToTheQuestion