我试图将一个纹理表面复制到不同上下文的纹理上,以创建一个共享Bitmap,但结果是一个黑色的图片。有什么问题吗?
hr = device->CreateTexture2D(&texDesc, 0, &tmpTexture);
IDXGIResource1* pOtherResource(NULL);
hr = secondTexture->QueryInterface(__uuidof(IDXGIResource), (void**)&pOtherResource);
HANDLE sharedHandle;
hr = pOtherResource->GetSharedHandle(&sharedHandle);
hr = device->OpenSharedResource(sharedHandle, __uuidof(ID3D11Texture2D), (void**)&tmpTexture);
m_DeviceContext->CopyResource(tmpTexture, secondTexture);
纹理共享是可能的,但是有一些重要的限制。
首先,你需要启用debug层,并检查debug SDK层可能发出的调试输出。
其次,从你的问题中并不能得出问题中的两个设备属于同一个DXGI适配器,这一点很重要。
第三,可能涉及到同步,忽略了这一点会导致黑屏。Windows图形API之间的Surface共享--DXGI 1.1同步共享Surface。.