将D3D11Texture2D转换为另一种不同上下文和设备的纹理。

问题描述 投票:1回答:1

我试图将一个纹理表面复制到不同上下文的纹理上,以创建一个共享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);
c++ directx-11 dxgi
1个回答
0
投票

纹理共享是可能的,但是有一些重要的限制。

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

其次,从你的问题中并不能得出问题中的两个设备属于同一个DXGI适配器,这一点很重要。

第三,可能涉及到同步,忽略了这一点会导致黑屏。Windows图形API之间的Surface共享--DXGI 1.1同步共享Surface。.

© www.soinside.com 2019 - 2024. All rights reserved.