C++ Directx 12:两个进程之间的同步

C++ Directx 12:两个进程之间的同步,c++,directx-12,C++,Directx 12,我创建了两个应用程序 一个应用程序正在使用“无帧速率显示”选项在屏幕外渲染纹理 第二个应用程序从图形内存中读取APP1正在渲染的内容,并在窗口中渲染/呈现它 当前,在执行如此频繁的更新时,此实现存在同步问题 我已将APP1的围栏与APP2共享,并且将要渲染的纹理资源也共享 我正在检查APP1围栏信号的完成值,以等待APP1围栏值+1完成 但是我越来越 D3D12错误:ID3D12Resource1:::损坏:命令队列上正在运行的GPU操作引用了ID3D12Resource对象(0x0000011

我创建了两个应用程序

一个应用程序正在使用“无帧速率显示”选项在屏幕外渲染纹理

第二个应用程序从图形内存中读取APP1正在渲染的内容,并在窗口中渲染/呈现它

当前,在执行如此频繁的更新时,此实现存在同步问题

我已将APP1的围栏与APP2共享,并且将要渲染的纹理资源也共享

我正在检查APP1围栏信号的完成值,以等待APP1围栏值+1完成

但是我越来越

D3D12错误:ID3D12Resource1:::损坏:命令队列上正在运行的GPU操作引用了ID3D12Resource对象(0x0000011055B9BD90:“SharedTextureResource”)

。。。。[执行错误#921:对象在仍在使用时被删除]

因此,是否有可能在directx 12中用两个不同的应用程序同步这种实现

那么,我们如何继续同步这种方法


谢谢。

第一个想法:APP2等待APP1渲染到纹理。但是APP1会等到APP2出现吗?第二个想法:你是否
OpenSharedHandle
每一帧?起初,我在每一帧中都使用OpenSharedHandle,这会导致崩溃,并且有一段时间会工作。。。。后来我只打开了一次,开始的时候一切似乎都很好。。。但是仍然需要进一步检查问题……很好,您应该只调用一次
OpenSharedHandle
,然后使用相同的资源。您必须在某处删除资源(删除意味着您的ComPtr>超出范围)。stack trace能帮你什么忙吗?共享?不,内存是重用的,这就是重点