1、用NVAPI 进行D3D9抓屏,抓屏后创建HANDLE进行数据交换
2、D3D11利用D3D9传入的HANDLE使用OpenSharedResource来打开句柄实现D3D9到D3D11的数据传递
需要的库
1、NVAPI 安装完成后需要运行NVIDIA Capture SDK\bin目录下的NvFBCEnable.exe使能NVFBC抓屏
2、DXSDK_Jun10
坑(虽然已解决但是有没有大神来解释一下原理):
D3D9直接传递OffcreenSurface的HANDLE,D3D11在进行某些操作时会导致设备停止工作。解决办法:从新创建了Texture来曲线救国。
抓屏成功后D3D9Device要调用Present(0, 0, 0, 0)来进行数据提交。否则第一帧D3D11拿到的数据为空。
1