Вы можете получить экземпляр CanvasBitmap, вызвав CanvasBitmap.CreateFromDirect3D11Surface .Вызов метода GetPixelBytes в этом экземпляре возвращает данные пикселей растрового изображения в виде байтового массива.
using (var frame = _framePool.TryGetNextFrame()) {
using (var canvasBitmap = CanvasBitmap.CreateFromDirect3D11Surface(_canvasDevice, frame.Surface)) {
bytes[] pixelData = canvasBitmap.GetPixelBytes();
}
}
Нужно ли выполнять кодирование или декодирование или обе операции, прежде чемполучить данные пикселей?
Возвращенные данные должны быть в том же формате пикселей, который вы указали при создании пула кадров:
_framePool = Direct3D11CaptureFramePool.Create(
_canvasDevice, // D3D device
DirectXPixelFormat.B8G8R8A8UIntNormalized, // Pixel format
2, // Number of frames
_item.Size); // Size of the buffers