ID3D10Device::OpenSharedResource メソッド (d3d10.h)
別の Direct3d デバイスで作成された共有リソースへのアクセス権をデバイスに付与します。
構文
HRESULT OpenSharedResource(
[in] HANDLE hResource,
[in] REFIID ReturnedInterface,
[out] void **ppResource
);
パラメーター
[in] hResource
型: HANDLE
リソース ハンドル。 「解説」を参照してください。
[in] ReturnedInterface
種類: REFIID
リソース インターフェイスのグローバル一意識別子 (GUID)。 「解説」を参照してください。
[out] ppResource
型: void**
アクセス権を取得しているリソースへのポインターのアドレス。
戻り値
種類: HRESULT
このメソッドは、次の Direct3D 10 リターン コードのいずれかを返します。
注釈
2 つの Direct3D 10 デバイス間でリソースを共有するには、リソースが ID3D10Device インターフェイスを使用して作成された場合は、 D3D10_RESOURCE_MISC_SHARED フラグを使用して作成されている必要があります。 IDXGIDevice インターフェイスを使用して作成された場合、リソースは常に共有されます。
リソースへのインターフェイスの REFIID (GUID) は、__uuidof() マクロを使用して取得できます。 たとえば、__uuidof(ID3D10Buffer) はインターフェイスの GUID をバッファー リソースに取得します。
2 つの Direct3D 10 デバイス間でリソースを共有する場合、 IDXGIResource インターフェイスのリソースに対してクエリを実行し、 GetSharedHandle を呼び出すことで、リソースの一意のハンドルを取得できます。
IDXGIResource* pOtherResource(NULL);
hr = pOtherDeviceResource->QueryInterface( __uuidof(IDXGIResource), (void**)&pOtherResource );
HANDLE sharedHandle;
pOtherResource->GetSharedHandle(&sharedHandle);
共有できるリソースは、mipmapped 以外の 2D テクスチャのみです。
Direct3D 9 デバイスと Direct3D 10 デバイスの間でリソースを共有するには、CreateTexture の pSharedHandle 引数を使用してテクスチャを作成する必要があります。
共有 Direct3D 9 ハンドルは、 hResource 引数で OpenSharedResource に渡されます。
次のコードは、関連するメソッド呼び出しを示しています。
sharedHandle = NULL; // must be set to NULL to create, can use a valid handle here to open in D3D9
pDevice9->CreateTexture(..., pTex2D_9, &sharedHandle);
...
pDevice10->OpenSharedResource(sharedHandle, __uuidof(ID3D10Resource), (void**)(&tempResource10));
tempResource10->QueryInterface(__uuidof(ID3D10Texture2D), (void**)(&pTex2D_10));
tempResource10->Release();
// now use pTex2D_10 with pDevice10
D3D9 から D3D10 に共有されるテクスチャには、次の制限があります。
- テクスチャは 2D である必要があります
- 1 mip レベルのみが許可されます
- テクスチャには既定の使用法が必要です
- テクスチャは書き込み専用である必要があります
- MSAA テクスチャは使用できません
- バインド フラグには、SHADER_RESOURCEとRENDER_TARGETが設定されている必要があります
- R10G10B10A2_UNORM、R16G16B16A16_FLOAT、およびR8G8B8A8_UNORM形式のみが許可されます
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | d3d10.h |