Fungsi D3D11CreateDevice (d3d11.h)

Membuat perangkat yang mewakili adaptor tampilan.

Sintaks

HRESULT D3D11CreateDevice(
  [in, optional]  IDXGIAdapter            *pAdapter,
                  D3D_DRIVER_TYPE         DriverType,
                  HMODULE                 Software,
                  UINT                    Flags,
  [in, optional]  const D3D_FEATURE_LEVEL *pFeatureLevels,
                  UINT                    FeatureLevels,
                  UINT                    SDKVersion,
  [out, optional] ID3D11Device            **ppDevice,
  [out, optional] D3D_FEATURE_LEVEL       *pFeatureLevel,
  [out, optional] ID3D11DeviceContext     **ppImmediateContext
);

Parameter

[in, optional] pAdapter

Jenis: IDXGIAdapter*

Penunjuk ke adaptor video untuk digunakan saat membuat perangkat. Teruskan NULL untuk menggunakan adaptor default, yang merupakan adaptor pertama yang dijumlahkan oleh IDXGIFactory1::EnumAdapters.

Catatan Jangan mencampur penggunaan DXGI 1.0 (IDXGIFactory) dan DXGI 1.1 (IDXGIFactory1) dalam aplikasi. Gunakan IDXGIFactory atau IDXGIFactory1, tetapi tidak keduanya dalam aplikasi.
 

DriverType

Jenis: D3D_DRIVER_TYPE

D3D_DRIVER_TYPE, yang mewakili jenis driver yang akan dibuat.

Software

Jenis: HMODULE

Handel ke DLL yang mengimplementasikan rasterizer perangkat lunak. Jika DriverTypeD3D_DRIVER_TYPE_SOFTWARE, Perangkat Lunak tidak boleh NULL. Dapatkan handel dengan memanggil LoadLibrary, LoadLibraryEx , atau GetModuleHandle.

Flags

Jenis: UINT

Lapisan runtime untuk diaktifkan (lihat D3D11_CREATE_DEVICE_FLAG); nilai dapat menjadi bitwise OR bersama-sama.

[in, optional] pFeatureLevels

Jenis: const D3D_FEATURE_LEVEL*

Penunjuk ke array D3D_FEATURE_LEVELs, yang menentukan urutan tingkat fitur yang akan dibuat. Jika pFeatureLevels diatur ke NULL, fungsi ini menggunakan array tingkat fitur berikut:

{
    D3D_FEATURE_LEVEL_11_0,
    D3D_FEATURE_LEVEL_10_1,
    D3D_FEATURE_LEVEL_10_0,
    D3D_FEATURE_LEVEL_9_3,
    D3D_FEATURE_LEVEL_9_2,
    D3D_FEATURE_LEVEL_9_1,
};
Catatan Jika runtime Direct3D 11.1 ada di komputer dan pFeatureLevels diatur ke NULL, fungsi ini tidak akan membuat perangkat D3D_FEATURE_LEVEL_11_1 . Untuk membuat perangkat D3D_FEATURE_LEVEL_11_1 , Anda harus secara eksplisit menyediakan array D3D_FEATURE_LEVEL yang menyertakan D3D_FEATURE_LEVEL_11_1. Jika Anda menyediakan array D3D_FEATURE_LEVEL yang berisi D3D_FEATURE_LEVEL_11_1 di komputer yang tidak menginstal runtime Direct3D 11.1, fungsi ini segera gagal dengan E_INVALIDARG.
 

FeatureLevels

Jenis: UINT

Jumlah elemen dalam pFeatureLevels.

SDKVersion

Jenis: UINT

Versi SDK; gunakan D3D11_SDK_VERSION.

[out, optional] ppDevice

Jenis: ID3D11Device**

Mengembalikan alamat pointer ke objek ID3D11Device yang mewakili perangkat yang dibuat. Jika parameter ini NULL, tidak ada ID3D11Device yang akan dikembalikan.

[out, optional] pFeatureLevel

Jenis: D3D_FEATURE_LEVEL*

Jika berhasil, mengembalikan D3D_FEATURE_LEVEL pertama dari array pFeatureLevels yang berhasil. Berikan NULL sebagai input jika Anda tidak perlu menentukan tingkat fitur mana yang didukung.

[out, optional] ppImmediateContext

Jenis: ID3D11DeviceContext**

Mengembalikan alamat pointer ke objek ID3D11DeviceContext yang mewakili konteks perangkat. Jika parameter ini NULL, tidak ada ID3D11DeviceContext yang akan dikembalikan.

Menampilkan nilai

Jenis: HRESULT

Metode ini dapat mengembalikan salah satu Kode Pengembalian Direct3D 11.

Metode ini mengembalikan E_INVALIDARG jika Anda mengatur parameter pAdapter ke nilai non-NULL dan parameter DriverType ke nilai D3D_DRIVER_TYPE_HARDWARE.

Metode ini mengembalikan DXGI_ERROR_SDK_COMPONENT_MISSING jika Anda menentukan D3D11_CREATE_DEVICE_DEBUG di Bendera dan versi lapisan debug yang salah diinstal pada komputer Anda. Instal Windows SDK terbaru untuk mendapatkan versi yang benar.

Keterangan

Titik masuk ini didukung oleh runtime Direct3D 11, yang tersedia di Windows 7, Windows Server 2008 R2, dan sebagai pembaruan untuk Windows Vista (KB971644).

Untuk membuat perangkat Direct3D 11.1 (ID3D11Device1), yang tersedia di Windows 8, Windows Server 2012, dan Windows 7 dan Windows Server 2008 R2 dengan Pembaruan Platform untuk Windows 7 diinstal, Pertama-tama Anda membuat ID3D11Device dengan fungsi ini, lalu memanggil metode QueryInterface pada objek ID3D11Device untuk mendapatkan antarmuka ID3D11Device1 .

Untuk membuat perangkat Direct3D 11.2 (ID3D11Device2), yang tersedia di Windows 8.1 dan Windows Server 2012 R2, Anda terlebih dahulu membuat ID3D11Device dengan fungsi ini, lalu memanggil metode QueryInterface pada objek ID3D11Device untuk mendapatkan antarmuka ID3D11Device2 .

Atur ppDevice dan ppImmediateContext ke NULL untuk menentukan tingkat fitur mana yang didukung dengan melihat pFeatureLevel tanpa membuat perangkat.

Misalnya, lihat Cara: Membuat Perangkat dan Konteks Langsung; untuk membuat perangkat dan rantai pertukaran secara bersamaan, gunakan D3D11CreateDeviceAndSwapChain.

Jika Anda mengatur parameter pAdapter ke nilai non-NULL , Anda juga harus mengatur parameter DriverType ke nilai D3D_DRIVER_TYPE_UNKNOWN. Jika Anda mengatur parameter pAdapter ke nilai non-NULL dan parameter DriverType ke nilai D3D_DRIVER_TYPE_HARDWARE, D3D11CreateDevice mengembalikan HRESULT E_INVALIDARG.

Perbedaan antara Direct3D 10 dan Direct3D 11:

Dalam Direct3D 10, keberadaan pAdapter menentukan adaptor mana yang akan digunakan dan DriverType dapat tidak cocok dengan adaptor.

Di Direct3D 11, jika Anda mencoba membuat perangkat keras atau perangkat lunak, atur pAdapter != NULL yang membatasi input lain menjadi:

  • DriverType harus D3D_DRIVER_TYPE_UNKNOWN
  • Perangkat lunak harus NULL.
Di sisi lain, jika pAdapter == NULL, DriverType tidak dapat diatur ke D3D_DRIVER_TYPE_UNKNOWN; dapat diatur ke:
  • Jika DriverType == D3D_DRIVER_TYPE_SOFTWARE, Perangkat Lunak tidak boleh NULL.
  • Jika DriverType == D3D_DRIVER_TYPE_HARDWARE, adaptor yang digunakan akan menjadi adaptor default, yang merupakan adaptor pertama yang dijumlahkan oleh IDXGIFactory1::EnumAdapters
 

Tanda tangan fungsi PFN_D3D11_CREATE_DEVICE disediakan sebagai typedef, sehingga Anda dapat menggunakan teknik penautan dinamis (GetProcAddress) alih-alih menautkan secara statis.

Windows Phone 8: API ini didukung.

Windows Phone 8.1: API ini didukung.

Persyaratan

   
Target Platform Windows
Header d3d11.h
Pustaka D3D11.lib
DLL D3D11.dll

Lihat juga

Fungsi Inti