Bagikan melalui


METODE ID3D11DeviceContext1::SwapDeviceContextState (d3d11_1.h)

Mengaktifkan objek status konteks yang diberikan dan mengubah perilaku perangkat saat ini menjadi Direct3D 11, Direct3D 10.1, atau Direct3D 10.

Sintaks

void SwapDeviceContextState(
  [in]            ID3DDeviceContextState *pState,
  [out, optional] ID3DDeviceContextState **ppPreviousState
);

Parameter

[in] pState

Penunjuk ke antarmuka ID3DDeviceContextState untuk objek status konteks yang sebelumnya dibuat melalui metode ID3D11Device1::CreateDeviceContextState . Jika SwapDeviceContextState dipanggil dengan pState diatur ke NULL, panggilan tidak berpengaruh.

[out, optional] ppPreviousState

Penunjuk ke variabel yang menerima penunjuk ke antarmuka ID3DDeviceContextState untuk objek status konteks yang diaktifkan sebelumnya.

Mengembalikan nilai

Tidak ada

Keterangan

SwapDeviceContextState mengubah perilaku perangkat. Perilaku perangkat ini tergantung pada antarmuka yang ditiru yang Anda berikan ke parameter EmulatedInterface dari metode ID3D11Device1::CreateDeviceContextState saat Anda membuat objek status konteks.

SwapDeviceContextState tidak didukung pada konteks yang ditangguhkan.

SwapDeviceContextState menonaktifkan antarmuka perangkat yang tidak kompatibel ID3D10Device, ID3D10Device1, ID3D11Device, dan ID3D11Device1. Saat objek status konteks aktif, runtime menonaktifkan metode tertentu pada perangkat dan antarmuka konteks. Objek status konteks yang dibuat dengan __uuidof(ID3D11Device1) atau __uuidof(ID3D11Device) menonaktifkan sebagian besar antarmuka perangkat Direct3D 10. Objek status konteks yang dibuat dengan __uuidof(ID3D10Device1) atau __uuidof(ID3D10Device) menonaktifkan sebagian besar metode ID3D11DeviceContext . Untuk informasi selengkapnya tentang perilaku ini, lihat ID3D11Device1::CreateDeviceContextState.

SwapDeviceContextState mengaktifkan objek status konteks yang ditentukan oleh pState. Ini berarti bahwa perilaku perangkat yang terkait dengan tingkat fitur objek status konteks dan antarmuka yang kompatibel diaktifkan pada perangkat Direct3D hingga panggilan berikutnya ke SwapDeviceContextState. Selain itu, status apa pun yang disimpan ketika objek status konteks ini terakhir aktif sekarang diaktifkan kembali, sehingga status sebelumnya diganti.

SwapDeviceContextState mengatur ppPreviousState ke objek status konteks yang terakhir diaktifkan. Objek memungkinkan pemanggil untuk menyimpan lalu memulihkan status perangkat sebelumnya. Perilaku ini berguna dalam arsitektur plug-in seperti Direct2D yang berbagi perangkat Direct3D dengan plug-in-nya. Antarmuka Direct2D dapat menggunakan objek status konteks untuk menyimpan dan memulihkan status aplikasi.

Jika pemanggil sebelumnya tidak memanggil metode ID3D11Device1::CreateDeviceContextState untuk membuat objek status konteks sebelumnya, SwapDeviceContextState mengatur ppPreviousState ke objek status konteks default. Dalam kedua kasus, penggunaan SwapDeviceContextState sama.

Tingkat fitur yang ditentukan oleh aplikasi, dan yang dipilih oleh objek status konteks dari daftar yang dapat diterima yang disediakan aplikasi ke ID3D11Device1::CreateDeviceContextState, mengontrol tingkat fitur konteks langsung setiap kali objek status konteks aktif. Karena perangkat Direct3D 11 berulir bebas, metode perangkat tidak dapat mengkueri tingkat fitur konteks langsung saat ini. Sebaliknya, perangkat berjalan pada tingkat fitur yang merupakan maksimum dari semua tingkat fitur objek status konteks yang dibuat sebelumnya. Ini berarti bahwa tingkat fitur perangkat dapat meningkat secara dinamis.

Tingkat fitur objek status konteks mengontrol fungsionalitas yang tersedia dari konteks langsung. Namun, untuk mempertahankan kontrak utas bebas dari metode perangkat Direct3D 11—metode pembuatan sumber daya khususnya—tingkat fitur terikat atas dari semua objek status konteks yang dibuat mengontrol kumpulan sumber daya yang dibuat perangkat.

Karena antarmuka objek status konteks diterbitkan oleh konteks langsung, antarmuka memerlukan model utas yang sama dengan konteks langsung. Secara khusus, SwapDeviceContextState berutas tunggal sehubungan dengan metode konteks langsung lainnya dan sehubungan dengan metode ID3D10Device yang setara.

Sangat penting, karena hanya salah satu perilaku ref-count Direct3D 10 atau Direct3D 11 yang dapat tersedia pada satu waktu, salah satu antarmuka Direct3D 10 dan Direct3D 11 harus memutuskan kontrak ref-count-nya. Untuk menghindari situasi ini, aktivasi objek status konteks menonaktifkan antarmuka versi yang tidak kompatibel. Selain itu, jika Anda memanggil metode antarmuka versi yang tidak kompatibel, panggilan secara diam-diam gagal jika metode telah mengembalikan jenis batal, mengembalikan nilai HRESULTE_INVALIDARG, atau mengatur parameter keluar apa pun ke NULL.

Saat Anda beralih dari mode Direct3D 11 ke mode Direct3D 10 atau mode Direct3D 10.1, perilaku pengikatan perangkat berubah. Secara khusus, rilis akhir sumber daya menginduksi unbind dalam mode Direct3D 10 atau mode Direct3D 10.1. Selama rilis akhir, aplikasi merilis semua referensi sumber daya, termasuk referensi tidak langsung seperti tautan dari tampilan ke sumber daya, dan tautan dari objek status konteks ke salah satu sumber daya terikat objek status konteks. Sumber daya terikat apa pun yang tidak memiliki referensi aplikasi tidak terikat dan dihancurkan, untuk mempertahankan perilaku Direct3D 10.

SwapDeviceContextState tidak memengaruhi status apa pun yang ditetapkan ID3D11VideoContext .

Daftar perintah yang dihasilkan oleh konteks yang ditangguhkan tidak menyimpan referensi ke objek status konteks dan tidak terpengaruh oleh pembaruan di masa mendatang untuk objek status konteks.

Tidak ada objek asinkron yang dipengaruhi oleh SwapDeviceContextState. Misalnya, jika kueri aktif sebelum panggilan ke SwapDeviceContextState, kueri masih aktif setelah panggilan.

Persyaratan

   
Klien minimum yang didukung Pembaruan Windows 8 dan Platform untuk Windows 7 [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2012 dan Platform Update untuk Windows Server 2008 R2 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header d3d11_1.h
Pustaka D3D11.lib

Lihat juga

ID3D11DeviceContext1