如何从TDirect2DCanvas(Direct2D Rendertarget)复制数据?

Mik*_*eeg 8 c++ windows delphi direct2d

我正在尝试使用C++ Builder的TDirect2DCanvas的Direct2D RenderTarget属性来使用GPU对位图操作进行基准测试.与GDI相比,这是最令人印象深刻的.但是,我无法弄清楚如何将结果返回到CPU内存中,因此我可以将其用于进一步的CPU处理.读过关于使用WIC的内容,但显然你放弃了大部分的硬件加速.Windows 8似乎提供了一个带有地图功能的新位图,但我想使用(标准)Windows 7.此外,C++ Builder不提供这些新功能的头文件.

给定一个TDirect2DCanvas,或者您希望使用Direct2D RenderTarget或ID2D1Bitmap,如何将位图复制回CPU内存?

Jas*_*per 0

我不是 Delphi 或 C++ Builder 方面的专家,但以下是我从 DirectX API 角度尝试的方法。

  1. 结合 Direct2D 创建 DXGI。
  2. 像您已经做的那样渲染您的场景。
  3. 作为后台缓冲区的 DXGI 交换链来获取像素信息。

这是一篇非常好的文章,解释了如何做到这一点:https://msdn.microsoft.com/en-us/magazine/dn198239.aspx