Bagikan melalui


Metode IDirect3D9::CreateDevice (d3d9helper.h)

Membuat perangkat untuk mewakili adaptor tampilan.

Sintaks

HRESULT CreateDevice(
  [in]          UINT                  Adapter,
  [in]          D3DDEVTYPE            DeviceType,
  [in]          HWND                  hFocusWindow,
  [in]          DWORD                 BehaviorFlags,
  [in, out]     D3DPRESENT_PARAMETERS *pPresentationParameters,
  [out, retval] IDirect3DDevice9      **ppReturnedDeviceInterface
);

Parameter

[in] Adapter

Jenis: UINT

Nomor urut yang menunjukkan adaptor tampilan. D3DADAPTER_DEFAULT selalu merupakan adaptor tampilan utama.

[in] DeviceType

Jenis: D3DDEVTYPE

Anggota jenis enumerasi D3DDEVTYPE yang menunjukkan jenis perangkat yang diinginkan. Jika jenis perangkat yang diinginkan tidak tersedia, metode akan gagal.

[in] hFocusWindow

Jenis: HWND

Jendela fokus memperingatkan Direct3D saat aplikasi beralih dari mode latar depan ke mode latar belakang. Lihat Keterangan.

  • Untuk mode layar penuh, jendela yang ditentukan harus merupakan jendela tingkat atas.
  • Untuk mode berjendela, parameter ini mungkin NULL hanya jika anggota hDeviceWindow dari pPresentationParameters diatur ke nilai non-NULL yang valid.

[in] BehaviorFlags

Jenis: DWORD

Kombinasi satu atau beberapa opsi yang mengontrol pembuatan perangkat. Untuk informasi selengkapnya, lihat D3DCREATE.

[in, out] pPresentationParameters

Jenis: D3DPRESENT_PARAMETERS*

Arahkan ke struktur D3DPRESENT_PARAMETERS , yang menjelaskan parameter presentasi untuk perangkat yang akan dibuat. Jika BehaviorFlags menentukan D3DCREATE_ADAPTERGROUP_DEVICE, pPresentationParameters adalah array. Terlepas dari jumlah kepala yang ada, hanya satu permukaan kedalaman/stensil yang secara otomatis dibuat.

Untuk Windows 2000 dan Windows XP, laju refresh tampilan perangkat layar penuh diatur dalam urutan berikut:

  1. Kunci registri ForcedRefreshRate nonzero yang ditentukan pengguna, jika didukung oleh perangkat.
  2. Nilai laju refresh bukan nol yang ditentukan aplikasi dalam parameter presentasi.
  3. Laju refresh desktop terbaru, jika didukung oleh perangkat.
  4. 75 hertz jika didukung oleh perangkat.
  5. 60 hertz jika didukung oleh perangkat.
  6. Default perangkat.
Laju refresh yang tidak didukung akan default ke laju refresh terdekat yang didukung di bawahnya. Misalnya, jika aplikasi menentukan 63 hertz, 60 hertz akan digunakan. Tidak ada laju refresh yang didukung di bawah 57 hertz.

pPresentationParameters adalah parameter input dan output. Memanggil metode ini dapat mengubah beberapa anggota termasuk:

  • Jika BackBufferCount, BackBufferWidth, dan BackBufferHeight adalah 0 sebelum metode dipanggil, mereka akan diubah ketika metode kembali.
  • Jika BackBufferFormat sama dengan D3DFMT_UNKNOWN sebelum metode dipanggil, itu akan diubah ketika metode kembali.

[out, retval] ppReturnedDeviceInterface

Jenis: IDirect3DDevice9**

Alamat pointer ke antarmuka IDirect3DDevice9 yang dikembalikan, yang mewakili perangkat yang dibuat.

Menampilkan nilai

Jenis: HRESULT

Jika metode berhasil, nilai yang dikembalikan D3D_OK. Jika metode gagal, nilai yang dikembalikan dapat berupa salah satu hal berikut: D3DERR_DEVICELOST, D3DERR_INVALIDCALL, D3DERR_NOTAVAILABLE, D3DERR_OUTOFVIDEOMEMORY.

Keterangan

Metode ini mengembalikan antarmuka perangkat yang berfungsi penuh, diatur ke mode tampilan yang diperlukan (atau berjendela), dan dialokasikan dengan buffer belakang yang sesuai. Untuk mulai merender, aplikasi hanya perlu membuat dan mengatur buffer kedalaman (dengan asumsi EnableAutoDepthStencil ADALAH FALSE di D3DPRESENT_PARAMETERS).

Saat membuat perangkat Direct3D, Anda menyediakan dua parameter jendela yang berbeda: jendela fokus (hFocusWindow) dan jendela perangkat (hDeviceWindow di D3DPRESENT_PARAMETERS). Tujuan dari setiap jendela adalah:

  • Jendela fokus memperingatkan Direct3D saat aplikasi beralih dari mode latar depan ke mode latar belakang (melalui Alt-Tab, klik mouse, atau beberapa metode lainnya). Satu jendela fokus dibagikan oleh setiap perangkat yang dibuat oleh aplikasi.
  • Jendela perangkat menentukan lokasi dan ukuran buffer belakang di layar. Ini digunakan oleh Direct3D ketika konten buffer belakang disalin ke buffer depan selama Ada.
Metode ini tidak boleh dijalankan selama penanganan WM_CREATE. Aplikasi tidak boleh meneruskan handel jendela ke Direct3D saat menangani WM_CREATE. Setiap panggilan untuk membuat, merilis, atau mengatur ulang perangkat harus dilakukan menggunakan utas yang sama dengan prosedur jendela jendela jendela fokus.

Perhatikan bahwa D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING, dan D3DCREATE_SOFTWARE_VERTEXPROCESSING adalah bendera yang saling eksklusif, dan setidaknya salah satu bendera pemrosesan puncak ini harus ditentukan saat memanggil metode ini.

Buffer belakang yang dibuat sebagai bagian dari perangkat hanya dapat dikunci jika D3DPRESENTFLAG_LOCKABLE_BACKBUFFER ditentukan dalam parameter presentasi. (Buffer belakang multisampled dan permukaan kedalaman tidak pernah dapat dikunci.)

Metode Reset, IUnknown, dan TestCooperativeLevel harus dipanggil dari utas yang sama yang menggunakan metode ini untuk membuat perangkat.

D3DFMT_UNKNOWN dapat ditentukan untuk format buffer belakang mode berjendela saat memanggil CreateDevice, Reset, dan CreateAdditionalSwapChain. Ini berarti aplikasi tidak perlu mengkueri format desktop saat ini sebelum memanggil CreateDevice untuk mode berjendela. Untuk mode layar penuh, format buffer belakang harus ditentukan.

Jika Anda mencoba membuat perangkat pada jendela berukuran 0x0, CreateDevice akan gagal.

Persyaratan

   
Target Platform Windows
Header d3d9helper.h (termasuk D3D9.h)
Pustaka D3D9.lib

Lihat juga

D3DDEVICE_CREATION_PARAMETERS

Direct3DCreate9

IDirect3D9

Multihead (Direct3D 9)

Atur ulang