C++ D3D11Texture2D到另一个具有不同上下文和设备的纹理

C++ D3D11Texture2D到另一个具有不同上下文和设备的纹理,c++,directx-11,dxgi,C++,Directx 11,Dxgi,我试图将一个纹理曲面从不同的上下文复制到一个纹理,以创建一个sharedBitmap,但结果是一个黑色图片。怎么了 hr = device->CreateTexture2D(&texDesc, 0, &tmpTexture); IDXGIResource1* pOtherResource(NULL); hr = secondTexture->QueryInterface(__uuidof(IDXGIResource), (void**)&pOtherReso

我试图将一个纹理曲面从不同的上下文复制到一个纹理,以创建一个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适配器,这一点很重要


第三,可能涉及同步,忽略会导致黑度的同步:。

纹理共享是可能的,但存在重要的限制

首先,您需要启用调试层并检查调试SDK层可能发出的调试输出

其次,您的问题并不意味着这两个设备属于同一个DXGI适配器,这一点很重要


第三,可能涉及到同步,忽略这会导致黑度:。

我想要从secondTexture复制到tmpTexture。tmp纹理由设备创建,第二个由m_DeviceContext创建。怎么做?你不需要调用hr=device->CreateTexture2D(&texDesc,0,&tmpTexture);如果您计划使用OpenSharedResource从共享句柄初始化tmpTexture。还要检查所有hr结果以查看是否出现任何错误。还有一些限制,例如MSAA纹理无法共享。检查此处末尾的要求:我希望从secondTexture复制到tmpTexture。tmp纹理由设备创建,第二个由m_DeviceContext创建。怎么做?你不需要调用hr=device->CreateTexture2D(&texDesc,0,&tmpTexture);如果您计划使用OpenSharedResource从共享句柄初始化tmpTexture。还要检查所有hr结果以查看是否出现任何错误。还有一些限制,例如MSAA纹理无法共享。检查此处末尾的要求: