3

我正在查看文档IDXGIKeyedMutex,但我对以下内容有点不确定:

完成对表面的渲染后,必须调用 ReleaseSync 方法。

我的问题是“当你完成渲染”是什么意思?是在删除纹理作为即时上下文的渲染目标之后,当我调用Flush即时上下文时,还是在调用之前需要某种其他形式的 GPU 围栏/同步ReleaseSync

还有为什么D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX首选D3D11_RESOURCE_MISC_SHARED呢?

4

1 回答 1

1

在调用 ID3D11DeviceContext::Draw 调用或其他调用以发出 GPU 命令以写入缓冲区(即 ID3D11DeviceContext::CopyResource)之后,您应该调用 IDXGIKeyedMutex::ReleaseSync。您不需要显式调用 Flush。有关使用 AcquireSync/ReleaseSync 的示例,请查看http://code.msdn.microsoft.com/DXGISyncSharedSurf

D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX 优于 D3D11_RESOURCE_MISC_SHARED,因为它可以与 D3D11_RESOURCE_MISC_SHARED_NTHANDLE 一起使用,从而为跨进程表面共享提供更好的安全性。

于 2013-01-29T09:47:30.597 回答