如何理解CopyResource的异步性?

问题描述

        virtual void STDMETHODCALLTYPE CopyResource(
        /* [annotation] */
        _In_ ID3D11Resource *pDstResource,/* [annotation] */
        _In_ ID3D11Resource *pSrcResource);
  • 我对此功能有疑问,尤其是在pDstResource上立即有读写操作时,例如以下代码,由于异步,我能否确保每次pDstResource都是新渲染的图像而不是black_color ?

  • 这种怀疑是因为在使用IDXGIOutputDuplication :: AcquireNextFrame获取第一帧并调用CopyResource之前,需要很短的时间进入Sleep才能看到复制了pDstResource(根据渲染输出判断)。>

  • 参考performance considerations,我仍然不知道这里的原理,是否是WinB要访问pDstResource_shared时,Direct3D会在内部进行同步(即执行CopyResource命令)?担心误会。

     for(;;)
     {
         1,  WinA_Clear(black_color)
         2,  WinA_DrawRedTriangleOnTexture(pSrcResource)
         3,WinA_CopyResource(pDstResource_shared,pSrcResource)
         4,WinB_Clear(white_color)
         5,WinB_RenderTexture(pDstResource_shared)
     }
    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)