Condividi tramite


Metodo ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews (d3d11.h)

Associa le risorse alla fase di fusione di output.

Sintassi

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
);

Parametri

[in] NumRTVs

Tipo: UINT

Numero di destinazioni di rendering da associare (intervalli compresi tra 0 e D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT). Se questo parametro è diverso da zero, il numero di voci nella matrice a cui ppRenderTargetViews punta deve essere uguale al numero in questo parametro. Se si impostano NumRTV su D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), questo metodo non modifica le visualizzazioni di destinazione di rendering attualmente associate e non modifica anche la visualizzazione profondità-stencil (DSV).

[in, optional] ppRenderTargetViews

Tipo: ID3D11RenderTargetView*

Puntatore a una matrice di ID3D11RenderTargetViewche rappresentano le destinazioni di rendering da associare al dispositivo. Se questo parametro è NULL e NumRTV è 0, non sono associate destinazioni di rendering.

[in, optional] pDepthStencilView

Tipo: ID3D11DepthStencilView*

Puntatore a un ID3D11DepthStencilView che rappresenta la visualizzazione profondità-stencil da associare al dispositivo. Se questo parametro è NULL, la visualizzazione profondità-stencil non è associata.

[in] UAVStartSlot

Tipo: UINT

Indice in una matrice in base zero per iniziare a impostare viste di accesso non ordinate (da 0 a D3D11_PS_CS_UAV_REGISTER_COUNT - 1).

Per il runtime Direct3D 11.1, disponibile a partire da Windows 8, questo valore può variare da 0 a D3D11_1_UAV_SLOT_COUNT - 1. D3D11_1_UAV_SLOT_COUNT è definito come 64.

Per i pixel shader, UAVStartSlot deve essere uguale al numero di visualizzazioni di destinazione di rendering associate.

[in] NumUAVs

Tipo: UINT

Numero di visualizzazioni di accesso non ordinate (UAV) in ppUnorderedAccessViews. Se si impostano NumUAVs su D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), questo metodo non modifica le viste di accesso non ordinate attualmente associate.

Per il runtime Direct3D 11.1, disponibile a partire da Windows 8, questo valore può variare da 0 a D3D11_1_UAV_SLOT_COUNT - UAVStartSlot.

[in, optional] ppUnorderedAccessViews

Tipo: ID3D11UnorderedAccessView*

Puntatore a una matrice di ID3D11UnorderedAccessViewche rappresentano le visualizzazioni di accesso non ordinate da associare al dispositivo. Se questo parametro è NULL e NumUAV è 0, non sono associate visualizzazioni di accesso non ordinate.

[in, optional] pUAVInitialCounts

Tipo: const UINT*

Matrice di offset del buffer accodamento e utilizzo. Il valore -1 indica di mantenere l'offset corrente. Tutti gli altri valori impostano il contatore nascosto per tale UAV accodabile e consumabile. pUAVInitialCounts è rilevante solo per le UAV create con D3D11_BUFFER_UAV_FLAG_APPEND o D3D11_BUFFER_UAV_FLAG_COUNTER specificate al momento della creazione dell'UAV; in caso contrario, l'argomento viene ignorato.

Valore restituito

nessuno

Osservazioni

Per gli shader pixel, le destinazioni di rendering e le viste di accesso non ordinate condividono gli stessi slot di risorse quando vengono scritti. Ciò significa che gli UAV devono essere assegnati un offset in modo che vengano inseriti negli slot dopo che le visualizzazioni di destinazione di rendering che sono associate.

Nota Non è possibile impostare le VV, le DSV e le UAV in modo indipendente; tutti devono essere impostati contemporaneamente.
 
Due RTV sono in conflitto se condividono una sottoresource (e quindi condividono la stessa risorsa).

Due UAV sono in conflitto se condividono una sottoresource (e quindi condividono la stessa risorsa).

Un oggetto RTV è in conflitto con un UAV se condividono una sottoresource o condividono un punto di associazione.

OMSetRenderTargetsAndUnorderedAccessViews funziona correttamente nelle situazioni seguenti:

  1. NumRTVs != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL e NumUAVs != D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    Le condizioni seguenti devono essere vere per OMSetRenderTargetsAndUnorderedAccessViews per esito positivo e per il runtime per passare le informazioni di associazione al driver:

    • NumRTV<= 8
    • UAVStartSlot>= NumRTV
    • UAVStartSlot + NumUAV<= 8
    • Non devono essere presenti conflitti nel set di tutti i ppRenderTargetViews e ppUnorderedAccessViews.
    • ppDepthStencilView deve corrispondere alle visualizzazioni di destinazione di rendering. Per altre informazioni sulle visualizzazioni delle risorse, vedere Introduzione a una risorsa in Direct3D 11.
    OMSetRenderTargetsAndUnorderedAccessViews esegue le attività seguenti:
    • Annulla l'associazione di tutte le risorse in conflitto (risorse di destinazione di output di flusso (SOTargets), UAV (COMPUTe shader, shader-resource views(SRV) .
    • Associa ppRenderTargetViews, ppDepthStencilView e ppUnorderedAccessViews.
  2. NumRTVs == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL

    In questa situazione, OMSetRenderTargetsAndUnorderedAccessViews associa solo UAV.

    Le condizioni seguenti devono essere vere per OMSetRenderTargetsAndUnorderedAccessViews per esito positivo e per il runtime per passare le informazioni di associazione al driver:

    • UAVStartSlot + NumUAV<= 8
    • Non devono essere presenti conflitti in ppUnorderedAccessViews.
    OMSetRenderTargetsAndUnorderedAccessViews annulla l'associazione degli elementi seguenti:
    • Tutti gli RTV negli slot >= UAVStartSlot
    • Tutte le RTV in conflitto con qualsiasi UAV in ppUnorderedAccessViews
    • Tutte le risorse attualmente associate (SOTargets, CS UAV, SRV) che sono in conflitto con ppUnorderedAccessViews
    OMSetRenderTargetsAndUnorderedAccessViews associa ppUnorderedAccessViews.

    OMSetRenderTargetsAndUnorderedAccessViews ignora ppDepthStencilView e la visualizzazione profondità-stencil corrente rimane associata.

  3. NumUAVs == D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    In questa situazione, OMSetRenderTargetsAndUnorderedAccessViews associa solo RTV e DSV.

    Le condizioni seguenti devono essere vere per OMSetRenderTargetsAndUnorderedAccessViews per esito positivo e per il runtime per passare le informazioni di associazione al driver:

    • NumRTV<= 8
    • Non ci devono essere conflitti in ppRenderTargetViews.
    • ppDepthStencilView deve corrispondere alle visualizzazioni di destinazione di rendering. Per altre informazioni sulle visualizzazioni delle risorse, vedere Introduzione a una risorsa in Direct3D 11.
    OMSetRenderTargetsAndUnorderedAccessViews annulla l'associazione degli elementi seguenti:
    • Tutti gli UAV negli slot <NumRTV
    • Tutte le UAV in conflitto con qualsiasi RTV in ppRenderTargetViews
    • Tutte le risorse attualmente associate (SOTargets, CS UAV, SRV) in conflitto con ppRenderTargetViews
    OMSetRenderTargetsAndUnorderedAccessViews associa ppRenderTargetViews e ppDepthStencilView.

    OMSetRenderTargetsAndUnorderedAccessViews ignora UAVStartSlot.

Windows Phone 8: questa API è supportata.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione d3d11.h
Libreria D3D11.lib

Vedi anche

ID3D11DeviceContext