我们有一个使用 DirectDraw 8 的旧应用程序。它直接逐个像素地写入视频内存,一切都很好。现在我需要将它移植到 Windows 商店应用程序中。
Media Foundation 似乎是渲染视频的推荐路径,并通过了“媒体引擎原生 C++ 视频播放示例(Windows 8.1)”,但即使是 Media Foundation 也使用 DirectDraw 进行视频渲染。
ComPtr<ID3D11Texture2D> backBuffer;
DX11SwapChain->GetBuffer(0, IID_PPV_ARGS(&backBuffer));
m_spMediaEngine->TransferVideoFrame(backBuffer.Get(), nullptr, &m_rcTarget, &m_bkgColor);
DX11SwapChain->Present(1, 0);
因此,通过 Direct3D 示例并能够获得 backBuffer。但是所有的样本似乎都在处理画线等,而没有设置单个像素。
如何获得像素?即设置 BackBuffer[somepixel] = someRGBA