METODE ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews (d3d11.h)
Mengikat sumber daya ke tahap output-merger.
Sintaks
void OMSetRenderTargetsAndUnorderedAccessViews(
[in] UINT NumRTVs,
[in, optional] ID3D11RenderTargetView * const *ppRenderTargetViews,
[in, optional] ID3D11DepthStencilView *pDepthStencilView,
[in] UINT UAVStartSlot,
[in] UINT NumUAVs,
[in, optional] ID3D11UnorderedAccessView * const *ppUnorderedAccessViews,
[in, optional] const UINT *pUAVInitialCounts
);
Parameter
[in] NumRTVs
Jenis: UINT
Jumlah target render untuk mengikat (rentang antara 0 dan D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT). Jika parameter ini bukan nol, jumlah entri dalam array tempat titik ppRenderTargetViews harus sama dengan angka dalam parameter ini. Jika Anda mengatur NumRTV ke D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), metode ini tidak memodifikasi tampilan target render (RTV) yang saat ini terikat dan juga tidak memodifikasi tampilan stensil kedalaman (DSV).
[in, optional] ppRenderTargetViews
Jenis: ID3D11RenderTargetView*
Penunjuk ke array ID3D11RenderTargetViewyang mewakili target render untuk mengikat ke perangkat. Jika parameter ini ADALAH NULL dan NumRTV adalah 0, tidak ada target render yang terikat.
[in, optional] pDepthStencilView
Jenis: ID3D11DepthStencilView*
Arahkan ke ID3D11DepthStencilView yang mewakili tampilan stensil kedalaman untuk mengikat perangkat. Jika parameter ini NULL, tampilan stensil kedalaman tidak terikat.
[in] UAVStartSlot
Jenis: UINT
Indeks ke dalam array berbasis nol untuk mulai mengatur tampilan akses yang tidak diurutkan (berkisar dari 0 hingga D3D11_PS_CS_UAV_REGISTER_COUNT - 1).
Untuk runtime Direct3D 11.1, yang tersedia dimulai dengan Windows 8, nilai ini dapat berkisar dari 0 hingga D3D11_1_UAV_SLOT_COUNT - 1. D3D11_1_UAV_SLOT_COUNT didefinisikan sebagai 64.
Untuk shader piksel, UAVStartSlot harus sama dengan jumlah tampilan target render yang terikat.
[in] NumUAVs
Jenis: UINT
Jumlah tampilan akses tidak terurut (UAV) di ppUnorderedAccessViews. Jika Anda mengatur NumUAV ke D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), metode ini tidak mengubah tampilan akses tidak berurut yang saat ini terikat.
Untuk runtime Direct3D 11.1, yang tersedia dimulai dengan Windows 8, nilai ini dapat berkisar dari 0 hingga D3D11_1_UAV_SLOT_COUNT - UAVStartSlot.
[in, optional] ppUnorderedAccessViews
Jenis: ID3D11UnorderedAccessView*
Penunjuk ke array ID3D11UnorderedAccessViewyang mewakili tampilan akses yang tidak diurutkan untuk mengikat ke perangkat. Jika parameter ini NULL dan NumUAV adalah 0, tidak ada tampilan akses yang tidak diurutkan yang terikat.
[in, optional] pUAVInitialCounts
Jenis: const UINT*
Array menambahkan dan mengonsumsi offset buffer. Nilai -1 menunjukkan untuk menjaga offset saat ini. Nilai lain apa pun mengatur penghitung tersembunyi untuk UAV yang dapat ditambahkan dan dapat dikonsumsi. pUAVInitialCounts hanya relevan untuk UAV yang dibuat dengan D3D11_BUFFER_UAV_FLAG_APPEND atau D3D11_BUFFER_UAV_FLAG_COUNTER yang ditentukan ketika UAV dibuat; jika tidak, argumen diabaikan.
Mengembalikan nilai
Tidak ada
Keterangan
Untuk shader piksel, target render dan tampilan akses yang tidak diurutkan berbagi slot sumber daya yang sama saat ditulis. Ini berarti bahwa UAV harus diberikan offset sehingga ditempatkan di slot setelah tampilan target render yang terikat.
Dua UAV berkonflik jika mereka berbagi subsumber daya (dan karenanya berbagi sumber daya yang sama).
RTV berkonflik dengan UAV jika mereka berbagi subsumber daya atau berbagi titik ikat.
OMSetRenderTargetsAndUnorderedAccessViews beroperasi dengan benar dalam situasi berikut:
-
NumRTVs != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL dan NumUAVs != D3D11_KEEP_UNORDERED_ACCESS_VIEWS
Kondisi berikut harus benar agar OMSetRenderTargetsAndUnorderedAccessViews berhasil dan agar runtime meneruskan informasi ikatan ke driver:
- NumRTV<= 8
- UAVStartSlot>= NumRTV
- UAVStartSlot + NumUAV<= 8
- Tidak boleh ada konflik dalam kumpulan semua ppRenderTargetViews dan ppUnorderedAccessViews.
- ppDepthStencilView harus cocok dengan tampilan target render. Untuk informasi selengkapnya tentang tampilan sumber daya, lihat Pengantar Sumber Daya di Direct3D 11.
- Membongkar semua sumber daya yang bertentangan yang saat ini terikat (sumber daya target output aliran (SOTargets), shader komputasi (CS) UAV, tampilan sumber daya shader (SRV)).
- Mengikat ppRenderTargetViews, ppDepthStencilView, dan ppUnorderedAccessViews.
-
NumRTVs == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL
Dalam situasi ini, OMSetRenderTargetsAndUnorderedAccessViews hanya mengikat UAV.
Kondisi berikut harus benar agar OMSetRenderTargetsAndUnorderedAccessViews berhasil dan agar runtime meneruskan informasi ikatan ke driver:
- UAVStartSlot + NumUAV<= 8
- Tidak boleh ada konflik di ppUnorderedAccessViews.
- Semua RTV dalam slot >= UAVStartSlot
- Semua RTV yang berkonflik dengan UAV apa pun di ppUnorderedAccessViews
- Semua sumber daya yang saat ini terikat (SOTargets, CS UAV, SRV) yang bertentangan dengan ppUnorderedAccessViews
OMSetRenderTargetsAndUnorderedAccessViews mengabaikan ppDepthStencilView, dan tampilan stensil kedalaman saat ini tetap terikat.
-
NumUAVs == D3D11_KEEP_UNORDERED_ACCESS_VIEWS
Dalam situasi ini, OMSetRenderTargetsAndUnorderedAccessViews hanya mengikat RTV dan DSV.
Kondisi berikut harus benar agar OMSetRenderTargetsAndUnorderedAccessViews berhasil dan agar runtime meneruskan informasi ikatan ke driver:
- NumRTV<= 8
- Tidak boleh ada konflik di ppRenderTargetViews.
- ppDepthStencilView harus cocok dengan tampilan target render. Untuk informasi selengkapnya tentang tampilan sumber daya, lihat Pengantar Sumber Daya di Direct3D 11.
- Semua UAV di slot <NumRTV
- Semua UAV yang bertentangan dengan RTV apa pun di ppRenderTargetViews
- Semua sumber daya yang saat ini terikat (SOTargets, CS UAV, SRV) yang bertentangan dengan ppRenderTargetViews
OMSetRenderTargetsAndUnorderedAccessViews mengabaikan UAVStartSlot.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | d3d11.h |
Pustaka | D3D11.lib |