METODE ID3D10Device::OpenSharedResource (d3d10.h)
Berikan akses perangkat ke sumber daya bersama yang dibuat pada perangkat Direct3d yang berbeda.
Sintaks
HRESULT OpenSharedResource(
[in] HANDLE hResource,
[in] REFIID ReturnedInterface,
[out] void **ppResource
);
Parameter
[in] hResource
Jenis: HANDEL
Handel sumber daya. Lihat komentar.
[in] ReturnedInterface
Jenis: REFIID
Pengidentifikasi unik global (GUID) untuk antarmuka sumber daya. Lihat komentar.
[out] ppResource
Jenis: void**
Alamat penunjuk ke sumber daya yang kita dapatkan aksesnya.
Nilai kembali
Jenis: HRESULT
Metode ini mengembalikan salah satu Kode Pengembalian Direct3D 10 berikut.
Keterangan
Untuk berbagi sumber daya antara dua perangkat Direct3D 10, sumber daya harus dibuat dengan bendera D3D10_RESOURCE_MISC_SHARED , jika dibuat menggunakan antarmuka ID3D10Device. Jika dibuat menggunakan antarmuka IDXGIDevice, sumber daya selalu dibagikan.
REFIID, atau GUID, antarmuka ke sumber daya dapat diperoleh dengan menggunakan makro __uuidof(). Misalnya, __uuidof(ID3D10Buffer) akan mendapatkan GUID antarmuka ke sumber daya buffer.
Saat berbagi sumber daya antara dua perangkat Direct3D 10, handel unik sumber daya dapat diperoleh dengan mengkueri sumber daya untuk antarmuka IDXGIResource lalu memanggil GetSharedHandle.
IDXGIResource* pOtherResource(NULL);
hr = pOtherDeviceResource->QueryInterface( __uuidof(IDXGIResource), (void**)&pOtherResource );
HANDLE sharedHandle;
pOtherResource->GetSharedHandle(&sharedHandle);
Satu-satunya sumber daya yang dapat dibagikan adalah tekstur 2D non-mipmapped.
Untuk berbagi sumber daya antara perangkat Direct3D 9 dan perangkat Direct3D 10, tekstur harus dibuat menggunakan argumen pSharedHandle dari CreateTexture.
Handel Direct3D 9 bersama kemudian diteruskan ke OpenSharedResource dalam argumen hResource .
Kode berikut mengilustrasikan panggilan metode yang terlibat.
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
Tekstur yang dibagikan dari D3D9 ke D3D10 memiliki batasan berikut.
- Tekstur harus 2D
- Hanya 1 tingkat mip yang diizinkan
- Tekstur harus memiliki penggunaan default
- Tekstur harus ditulis saja
- Tekstur MSAA tidak diperbolehkan
- Bendera ikatan harus memiliki set SHADER_RESOURCE dan RENDER_TARGET
- Hanya format R10G10B10A2_UNORM, R16G16B16A16_FLOAT, dan R8G8B8A8_UNORM yang diizinkan
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | d3d10.h |