我试图将纹理表面从其他上下文复制到纹理以创建sharedBitmap,但结果是黑色图片。怎么了?
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);
最佳答案
纹理共享是可能的,但存在重要限制。
首先,您需要启用调试层并检查调试SDK层可能发出的调试输出。
其次,不能从您的问题中得出问题的两个设备属于同一个DXGI适配器,这一点很重要。
第三,可能涉及同步,忽略同步会导致黑色:Surface Sharing Between Windows Graphics APIs -- DXGI 1.1 Synchronized Shared Surfaces。
关于c++ - D3D11Texture2D到具有不同上下文和设备的另一个纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60681882/