Bagikan melalui


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.

Catatan RTV, DSV, dan UAV tidak dapat diatur secara independen; mereka semua perlu diatur pada saat yang sama.
 
Dua RTV berkonflik jika mereka berbagi subsumber daya (dan karenanya berbagi sumber daya yang sama).

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:

  1. 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.
    OMSetRenderTargetsAndUnorderedAccessViews melakukan tugas-tugas berikut:
    • 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.
  2. 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.
    OMSetRenderTargetsAndUnorderedAccessViews membatalkan ikatan item berikut:
    • 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 mengikat ppUnorderedAccessViews.

    OMSetRenderTargetsAndUnorderedAccessViews mengabaikan ppDepthStencilView, dan tampilan stensil kedalaman saat ini tetap terikat.

  3. 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.
    OMSetRenderTargetsAndUnorderedAccessViews membatalkan ikatan item berikut:
    • 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 mengikat ppRenderTargetViews dan ppDepthStencilView.

    OMSetRenderTargetsAndUnorderedAccessViews mengabaikan UAVStartSlot.

Windows Phone 8: API ini didukung.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header d3d11.h
Pustaka D3D11.lib

Lihat juga

ID3D11DeviceContext