Bagikan melalui


Fungsi DCompositionCreateDevice2 (dcomp.h)

Membuat objek perangkat baru yang dapat digunakan untuk membuat objek Microsoft DirectComposition lainnya.

Sintaks

HRESULT DCompositionCreateDevice2(
  [in, optional] IUnknown *renderingDevice,
  [in]           REFIID   iid,
  [out]          void     **dcompositionDevice
);

Parameter

[in, optional] renderingDevice

Penunjuk opsional ke perangkat DirectX yang akan digunakan untuk membuat objek permukaan DirectComposition. Harus berupa penunjuk ke objek yang mengimplementasikan antarmuka IDXGIDevice atau ID2D1Device .

[in] iid

Pengidentifikasi antarmuka yang akan diambil. Ini harus salah satu dari __uuidof(IDCompositionDevice) atau __uuidof(IDCompositionDesktopDevice).

[out] dcompositionDevice

Menerima penunjuk antarmuka ke objek perangkat yang baru dibuat. Penunjuk adalah jenis yang ditentukan oleh parameter iid . Parameter ini tidak boleh NULL.

Nilai kembali

Jika fungsi berhasil, fungsi akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan. Lihat Kode Kesalahan DirectComposition untuk daftar kode kesalahan.

Keterangan

Objek perangkat berfungsi sebagai pabrik untuk semua objek DirectComposition lainnya. Ini juga mengontrol komposisi transaksional melalui metode IDCompositionDevice2::Commit.

Parameter renderingDevice dapat menunjuk ke objek perangkat DXGI, Direct3D, Direct2D, atau mungkin NULL. Parameter ini memengaruhi perilaku METODE IDCompositionDevice2::CreateSurface, IDCompositionDevice2::CreateVirtualSurface dan IDCompositionSurface::BeginDraw.

Jika parameter renderingDevice adalah NULL, maka perangkat DirectComposition yang dikembalikan tidak dapat langsung membuat objek permukaan DirectComposition. Secara khusus, metode IDCompositionDevice2::CreateSurface dan IDCompositionDevice2::CreateVirtualSurface mengembalikan E_INVALIDARG, terlepas dari parameter yang disediakan. Namun, objek perangkat DirectComposition seperti itu masih dapat digunakan untuk secara tidak langsung membuat permukaan jika aplikasi membuat objek pabrik permukaan melalui metode IDCompositionDevice2::CreateSurfaceFactory.

Jika parameter renderingDevice menunjuk ke perangkat DXGI, perangkat tersebut digunakan untuk mengalokasikan semua memori video yang diperlukan oleh metode IDCompositionDevice2::CreateSurface dan IDCompositionDevice2::CreateVirtualSurface. Selain itu, metode IDCompositionSurface::BeginDraw mengembalikan penunjuk antarmuka ke permukaan DXGI milik perangkat DXGI yang sama.

Jika parameter renderingDevice menunjuk ke objek perangkat Direct2D, DirectComposition mengekstrak dari objek perangkat DXGI yang mendasar dan menggunakannya seolah-olah objek perangkat DXGI telah diteruskan sebagai parameter renderingDevice . Namun, meneruskan objek Direct2D selanjutnya menyebabkan IDCompositionSurface::BeginDraw menerima __uuidof(ID2D1DeviceContext) untuk parameter iid-nya untuk objek apa pun yang dibuat dengan metode IDCompositionDevice2::CreateSurface atau IDCompositionDevice2::CreateVirtualSurface. Dalam hal ini, objek konteks perangkat Direct2D yang dikembalikan oleh IDCompositionSurface::BeginDraw akan milik perangkat Direct2D yang sama yang diteruskan sebagai parameter renderingDevice .

Jika parameter iid __uuidof(IDCompositionDevice), maka parameter dcompositionDevice menerima penunjuk ke antarmuka IDCompositionDevice Versi 1, tetapi objek yang mendasar adalah objek perangkat desktop Versi 2. Aplikasi nantinya dapat memperoleh penunjuk ke antarmuka IDCompositionDevice2 atau IDCompositionDesktopDevice dengan memanggil metode QueryInterface pada perangkat tersebut. Demikian pula, semua objek DirectComposition yang dibuat dari perangkat tersebut adalah objek Versi 2 di bawah sampul. Misalnya, metode IDCompositionDevice::CreateVisual akan mengembalikan antarmuka IDCompositionVisual ke visual yang dibuat, tetapi aplikasi dapat memperoleh penunjuk ke antarmuka IDCompositionVisual2 melalui metode QueryInterface. Perilaku ini memungkinkan aplikasi yang ditulis ke API DirectComposition V1 untuk mengadopsi fitur DirectComposition V2 secara bertahap dengan mengubah metode pembuatan perangkat dari DCompositionCreateDevice ke DCompositionCreateDevice2, sambil tetap meminta antarmuka IDCompositionDevice2. Ini memungkinkan sisa kode untuk tetap tidak berubah, sambil memungkinkan aplikasi untuk menggunakan QueryInterface hanya di tempat-tempat di mana fungsionalitas baru diperlukan.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8.1 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2012 R2 [hanya aplikasi desktop]
Target Platform Windows
Header dcomp.h
Pustaka Dcomp.lib
DLL Dcomp.dll

Lihat juga

IDCompositionDesktopDevice

IDCompositionDevice2

IDCompositionDevice2::CreateSurface

IDCompositionDevice2::CreateSurfaceFactory

IDCompositionDevice2::CreateVirtualSurface

IDCompositionSurface::BeginDraw