【发布时间】:2020-03-14 10:43:08
【问题描述】:
我正在尝试将纹理表面从不同的上下文复制到纹理以创建 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);
【问题讨论】:
-
我想从 secondTexture 复制到 tmpTexture。 tmp 纹理由设备创建,第二个由 m_DeviceContext 创建。怎么做?
-
你不需要调用 hr = device->CreateTexture2D(&texDesc, 0, &tmpTexture);如果您打算使用 OpenSharedResource 从共享句柄初始化 tmpTexture。
-
同时检查所有 hr 结果以查看是否出现任何错误。也有一些限制,例如不能共享 MSAA 纹理。在此处查看最后的要求:docs.microsoft.com/en-us/windows/win32/api/d3d11/…
标签: c++ directx-11 dxgi