ID3D11Device1::CreateDeviceContextState method (d3d11_1.h)
Membuat objek status konteks yang menyimpan semua status Microsoft Direct3D dan beberapa perilaku Direct3D.
Sintaks
HRESULT CreateDeviceContextState(
UINT Flags,
[in] const D3D_FEATURE_LEVEL *pFeatureLevels,
UINT FeatureLevels,
UINT SDKVersion,
REFIID EmulatedInterface,
[out, optional] D3D_FEATURE_LEVEL *pChosenFeatureLevel,
[out, optional] ID3DDeviceContextState **ppContextState
);
Parameter
Flags
Jenis: UINT
Kombinasi nilai D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG yang digabungkan dengan menggunakan operasi OR bitwise. Nilai yang dihasilkan menentukan cara membuat objek status konteks. Bendera D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED saat ini adalah satu-satunya bendera yang ditentukan. Jika perangkat asli dibuat dengan D3D11_CREATE_DEVICE_SINGLETHREADED, Anda harus membuat semua objek status konteks dari perangkat tersebut dengan bendera D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED .
Jika Anda mengatur bendera utas tunggal untuk objek status konteks dan perangkat, Anda menjamin bahwa Anda akan memanggil seluruh set metode konteks dan metode perangkat hanya dari satu utas. Oleh karena itu, Anda tidak perlu menggunakan bagian penting untuk menyinkronkan akses ke konteks perangkat, dan runtime dapat menghindari bekerja dengan bagian penting prosesor tersebut.
[in] pFeatureLevels
Jenis: const D3D_FEATURE_LEVEL*
Penunjuk ke array nilai D3D_FEATURE_LEVEL . Array dapat berisi elemen dari daftar berikut dan menentukan urutan tingkat fitur yang pembuatannya dicoba. Tidak seperti D3D11CreateDevice, Anda tidak dapat mengatur pFeatureLevels ke NULL karena tidak ada array tingkat fitur default.
{
D3D_FEATURE_LEVEL_11_1,
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,
};
FeatureLevels
Jenis: UINT
Jumlah elemen dalam pFeatureLevels. Tidak seperti D3D11CreateDevice, Anda harus mengatur FeatureLevels ke lebih besar dari 0 karena Anda tidak dapat mengatur pFeatureLevels ke NULL.
SDKVersion
Jenis: UINT
Versi SDK. Anda harus mengatur parameter ini ke D3D11_SDK_VERSION.
EmulatedInterface
Jenis: REFIID
Pengidentifikasi unik global (GUID) untuk antarmuka yang ditiru. Nilai ini menentukan perilaku perangkat saat objek status konteks aktif. Nilai yang valid diperoleh dengan menggunakan operator __uuidof pada antarmuka ID3D10Device, ID3D10Device1, ID3D11Device, dan ID3D11Device1 . Lihat Keterangan.
[out, optional] pChosenFeatureLevel
Jenis: D3D_FEATURE_LEVEL*
Penunjuk ke variabel yang menerima nilai D3D_FEATURE_LEVEL dari array pFeatureLevels . Ini adalah nilai array pertama di mana CreateDeviceContextState berhasil membuat objek status konteks. Jika panggilan ke CreateDeviceContextState gagal, variabel yang diarahkan oleh pChosenFeatureLevel diatur ke nol.
[out, optional] ppContextState
Jenis: ID3DDeviceContextState**
Alamat penunjuk ke objek ID3DDeviceContextState yang mewakili status perangkat Direct3D.
Nilai kembali
Jenis: HRESULT
Metode ini mengembalikan salah satu Kode Pengembalian Direct3D 11.
Keterangan
Nilai REFIID dari antarmuka yang ditimulasi adalah GUID yang diperoleh dengan menggunakan operator __uuidof . Misalnya, __uuidof(ID3D11Device)
mendapatkan GUID antarmuka ke perangkat Microsoft Direct3D 11.
Panggil metode ID3D11DeviceContext1::SwapDeviceContextState untuk mengaktifkan objek status konteks. Ketika objek status konteks aktif, perilaku perangkat yang terkait dengan tingkat fitur objek status konteks dan antarmuka yang kompatibel diaktifkan pada perangkat Direct3D hingga panggilan berikutnya ke SwapDeviceContextState.
Saat objek status konteks aktif, runtime menonaktifkan metode tertentu pada perangkat dan antarmuka konteks. Misalnya, objek status konteks yang dibuat dengan __uuidof(ID3D11Device)
akan menyebabkan runtime menonaktifkan sebagian besar antarmuka perangkat Microsoft Direct3D 10, dan objek status konteks yang dibuat dengan __uuidof(ID3D10Device1)
atau __uuidof(ID3D10Device)
akan menyebabkan runtime menonaktifkan sebagian besar metode ID3D11DeviceContext .
Perilaku ini memastikan bahwa pengguna dari salah satu antarmuka yang ditimulasikan tidak dapat mengatur status perangkat yang tidak dapat diekspresikan oleh antarmuka lain yang tidak dapat diekspresikan. Pembatasan ini membantu menjamin bahwa antarmuka yang ditiru ID3D10Device1 secara akurat mencerminkan status penuh alur dan bahwa antarmuka yang ditiru tidak akan beroperasi bertentangan dengan definisi antarmuka aslinya.
Misalnya, tahap tessellation dibuat aktif melalui antarmuka ID3D11DeviceContext saat Anda membuat perangkat melalui D3D11CreateDevice atau D3D11CreateDeviceAndSwapChain, alih-alih melalui Direct3D 10 yang setara. Karena konteks Direct3D 11 aktif, antarmuka Direct3D 10 tidak aktif saat Anda pertama kali mengambilnya melalui QueryInterface. Ini berarti Anda tidak dapat segera meneruskan antarmuka Direct3D 10 yang Anda ambil dari perangkat Direct3D 11 ke fungsi. Anda harus terlebih dahulu memanggil SwapDeviceContextState untuk mengaktifkan objek status konteks yang kompatibel dengan Direct3D 10.
Tabel berikut menunjukkan metode yang aktif dan tidak aktif untuk setiap antarmuka yang ditiru.
Antarmuka yang ditimulasikan | Perangkat aktif atau antarmuka konteks langsung | Perangkat tidak aktif atau antarmuka konteks langsung |
---|---|---|
ID3D11Device atau |
ID3D10Device | |
ID3D10Device1 atau |
ID3D11DeviceContext (Seperti yang diterbitkan oleh konteks langsung. Antarmuka yang ditiru Direct3D 10 atau Microsoft Direct3D 10.1 tidak berpengaruh pada konteks yang ditangguhkan.) |
Tabel berikut menunjukkan metode konteks langsung yang dinonaktifkan runtime saat objek status konteks yang ditunjukkan aktif.
Metode ID3D11DeviceContext saat __uuidof(ID3D10Device1) atau __uuidof(ID3D10Device) aktif |
Metode ID3D10Device saat __uuidof(ID3D11Device) aktif |
---|---|
IAGetVertexBuffers | |
IASetIndexBuffer | |
IASetInputLayout | |
IASetPrimitiveTopology | |
IASetVertexBuffers | |
Tabel berikut menunjukkan metode konteks langsung yang tidak dinonaktifkan runtime saat objek status konteks yang ditunjukkan aktif.
Metode ID3D11DeviceContext saat __uuidof(ID3D10Device1) atau __uuidof(ID3D10Device) aktif |
Metode ID3D10Device saat __uuidof(ID3D11Device) aktif |
---|---|
Tabel berikut menunjukkan metode antarmuka ID3D10Device yang tidak dinonaktifkan oleh runtime karena bukan metode konteks langsung.
Metode ID3D10Device |
---|
Buat*, seperti CreateQuery |
Windows Phone 8: API ini didukung.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 8 dan Pembaruan Platform untuk Windows 7 [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2012 dan Pembaruan Platform untuk Windows Server 2008 R2 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | d3d11_1.h |
Pustaka | D3D11.lib |