我有ID3D11Texture2D的句柄,但不能访问ID3D11DeviceContext或ID3D11Device。我想将该纹理复制到其他ID3D11Device上的其他纹理中。纹理不是用任何共享标志创建的。如果我试图复制ID3D11DeviceContext::CopyResource,就会得到警告:"D3D11损坏参数与设备不匹配“。我如何复制纹理或它的内容?我想这是可能的,因为例如,OpenVR API只使用纹理句柄而不使用任何上下文。
发布于 2016-11-16 03:57:20
如果没有使用共享标志创建纹理,则不能在两个设备之间使用它。
但是您有一个纹理对象,即一个ID3D11DeviceChild,它足以访问ID3D11DeviceChild::GetDevice来检索设备,并扩展为ID3D11Device::GetImmediateContext。
现在您已经可以访问设备和上下文了,您可以在原始设备上使用共享标志D3D11_RESOURCE_MISC_SHARED或您自己的共享标志创建一个额外的纹理,并使用ID3D11Device::OpenSharedResource检索另一个上的对象。最后,使用CopyResource将原始纹理复制到新对象中。
不要忘记,所有这些Get都添加了对需要释放的对象的引用,一旦您完成了这些引用。
https://stackoverflow.com/questions/40548584
复制相似问题