Bagikan melalui


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
Jika tekstur bersama diperbarui pada satu perangkat ID3D10Device::Flush harus dipanggil pada perangkat tersebut.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header d3d10.h

Lihat juga

Antarmuka ID3D10Device