2016-11-11 6 views
1

ID3D11Texture2Dのハンドルがありますが、ID3D11DeviceContextまたはID3D11Deviceにはアクセスできません。そのテクスチャを他のID3D11Device上の他のテクスチャにコピーしたいと思います。テクスチャは共有フラグとともに作成されません。 ID3D11DeviceContext :: CopyResourceでコピーしようとすると、「D3D11 CORRUPTIONパラメータがデバイスと一致しません」という警告が表示されます。テクスチャやその内容をどのようにコピーできますか?私はこれが可能だと思います。たとえば、OpenVR APIはコンテキストなしでテクスチャハンドルしか使用しないからです。他のD3D11デバイスにDirect3D11テクスチャをコピーする

+0

共有を使用していない場合、CPUメモリを介してそれを元に戻す必要があります。これは非常に遅くなります。 –

+0

@ChuckWalbourn CPUにテクスチャをコピーするには、まずテクスチャテクスチャにコピーする必要がありますか?そして、私は持っていないデバイスコンテキストが必要でしょうか? – superg

+0

即時デバイスコンテキストなしでコピーを実行することはできません。 –

答えて

2

テクスチャが共有フラグで作成されない場合は、2つのデバイス間でテクスチャを使用することはできません。

しかし、あなたはテクスチャオブジェクトを持っている、それはID3D11DeviceChildであり、あなたができる、今、あなたは、デバイスコンテキストへのアクセス権を持っていることをID3D11Device::GetImmediateContext

デバイスを取得するためにID3D11DeviceChild::GetDeviceへのアクセスを取得するのに十分と拡張子であります元のデバイス上に共有フラグD3D11_RESOURCE_MISC_SHAREDを追加して独自のテクスチャを作成し、独自のオブジェクトを取得し、もう一方のオブジェクトをID3D11Device::OpenSharedResourceで元に戻します。最後に元のテクスチャを新しいオブジェクトにコピーするCopyResource

これらのすべての文章が完了したら解放する必要があるオブジェクトへの参照を追加することを忘れないでください。Get

+1

魅力のように動作し、私の問題を完全に解決します。どうもありがとう! – superg

関連する問題