Freigeben über


ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews-Methode (d3d11.h)

Bindet Ressourcen an die Output-Merger-Phase.

Syntax

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

Typ: UINT

Anzahl der zu bindenden Renderziele (Bereiche zwischen 0 und D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT). Wenn dieser Parameter ungleich null ist, muss die Anzahl der Einträge im Array, auf das ppRenderTargetViews verweist, der Zahl in diesem Parameter entsprechen. Wenn Sie NumRTVs auf D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff) festlegen, ändert diese Methode nicht die aktuell gebundenen Renderzielansichten (RTVs) und ändert auch keine Tiefenschablonenansicht (DsV).

[in, optional] ppRenderTargetViews

Typ: ID3D11RenderTargetView*

Zeiger auf ein Array von ID3D11RenderTargetViews, die die Renderziele darstellen, die an das Gerät gebunden werden sollen. Wenn dieser Parameter NULL und NumRTVs 0 ist, sind keine Renderziele gebunden.

[in, optional] pDepthStencilView

Typ: ID3D11DepthStencilView*

Zeiger auf eine ID3D11DepthStencilView , die die Tiefenschablonenansicht darstellt, die an das Gerät gebunden werden soll. Wenn dieser Parameter NULL ist, ist die Tiefenschablonenansicht nicht gebunden.

[in] UAVStartSlot

Typ: UINT

Indizieren sie in ein nullbasiertes Array, um mit dem Festlegen von ungeordneten Zugriffsansichten (Bereiche von 0 bis D3D11_PS_CS_UAV_REGISTER_COUNT - 1) zu beginnen.

Für die Direct3D 11.1-Runtime, die ab Windows 8 verfügbar ist, kann dieser Wert zwischen 0 und D3D11_1_UAV_SLOT_COUNT - 1 liegen. D3D11_1_UAV_SLOT_COUNT wird als 64 definiert.

Bei Pixelshadern sollte UAVStartSlot gleich der Anzahl der gebundenen Renderzielansichten sein.

[in] NumUAVs

Typ: UINT

Anzahl der ungeordneten Zugriffsansichten (UAVs) in ppUnorderedAccessViews. Wenn Sie NumUAVs auf D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff) festlegen, ändert diese Methode die derzeit gebundenen ungeordneten Zugriffsansichten nicht.

Für die Direct3D 11.1-Runtime, die ab Windows 8 verfügbar ist, kann dieser Wert zwischen 0 und D3D11_1_UAV_SLOT_COUNT – UAVStartSlot liegen.

[in, optional] ppUnorderedAccessViews

Typ: ID3D11UnorderedAccessView*

Zeiger auf ein Array von ID3D11UnorderedAccessViews, die die ungeordneten Zugriffsansichten darstellen, die an das Gerät gebunden werden sollen. Wenn dieser Parameter NULL und NumUAVs den Wert 0 aufweist, sind keine ungeordneten Zugriffsansichten gebunden.

[in, optional] pUAVInitialCounts

Typ: const UINT*

Ein Array von Anfüge- und Nutzungspufferoffsets. Der Wert -1 gibt an, dass der aktuelle Offset beibehalten wird. Alle anderen Werte legen den ausgeblendeten Zähler für diese anfügbare und verwendbare UAV fest. pUAVInitialCounts ist nur für UAVs relevant, die entweder mit D3D11_BUFFER_UAV_FLAG_APPEND oder D3D11_BUFFER_UAV_FLAG_COUNTER erstellt wurden, die beim Erstellen der UAV angegeben wurden. Andernfalls wird das Argument ignoriert.

Rückgabewert

Keine

Bemerkungen

Bei Pixelshadern teilen sich die Renderziele und Ansichten für ungeordneten Zugriff die gleichen Ressourcenslots, wenn sie ausgeschrieben werden. Dies bedeutet, dass UAVs einen Offset erhalten müssen, damit sie in den Slots nach den Renderzielansichten platziert werden, die gebunden werden.

Hinweis RTVs, DSV und UAVs können nicht unabhängig festgelegt werden. sie müssen alle gleichzeitig festgelegt werden.
 
Zwei RTVs sind in Konflikt, wenn sie eine Unterressource (und daher dieselbe Ressource) gemeinsam nutzen.

Zwei UAVs sind in Konflikt, wenn sie eine Unterressource (und daher dieselbe Ressource) gemeinsam nutzen.

Eine RTV tritt mit einem UAV in Konflikt, wenn sie eine Unterressource oder einen Bindungspunkt gemeinsam nutzen.

OMSetRenderTargetsAndUnorderedAccessViews funktioniert in den folgenden Situationen ordnungsgemäß:

  1. NumRTVs != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL und NumUAVs != D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    Die folgenden Bedingungen müssen erfüllt sein, damit OMSetRenderTargetsAndUnorderedAccessViews erfolgreich ist und dass die Laufzeit die Bindungsinformationen an den Treiber übergibt:

    • NumRTVs<= 8
    • UAVStartSlot>= NumRTVs
    • UAVStartSlot + NumUAVs<= 8
    • Im Satz aller ppRenderTargetViews und ppUnorderedAccessViews darf es keine Konflikte geben.
    • ppDepthStencilView muss mit den Renderzielansichten übereinstimmen. Weitere Informationen zu Ressourcensichten finden Sie unter Einführung in eine Ressource in Direct3D 11.
    OMSetRenderTargetsAndUnorderedAccessViews führt die folgenden Aufgaben aus:
    • Hebt die Bindung aller derzeit in Konflikt stehenden Ressourcen auf (Stream-Output-Zielressourcen (SOTargets), Compute-Shader-UAVs (CS), Shaderressourcensichten (SRVs)).
    • Bindet ppRenderTargetViews, ppDepthStencilView und ppUnorderedAccessViews.
  2. NumRTVs == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL

    In dieser Situation bindet OMSetRenderTargetsAndUnorderedAccessViews nur UAVs.

    Die folgenden Bedingungen müssen erfüllt sein, damit OMSetRenderTargetsAndUnorderedAccessViews erfolgreich ist und dass die Laufzeit die Bindungsinformationen an den Treiber übergibt:

    • UAVStartSlot + NumUAVs<= 8
    • In ppUnorderedAccessViews dürfen keine Konflikte auftreten.
    OMSetRenderTargetsAndUnorderedAccessViews hebt die Bindung an die folgenden Elemente auf:
    • Alle RTVs in Slots >= UAVStartSlot
    • Alle RTVs, die mit uaVs in ppUnorderedAccessViews in Konflikt sind
    • Alle derzeit gebundenen Ressourcen (SOTargets, CS UAVs, SRVs), die mit ppUnorderedAccessViews in Konflikt sind
    OMSetRenderTargetsAndUnorderedAccessViews bindet ppUnorderedAccessViews.

    OMSetRenderTargetsAndUnorderedAccessViews ignoriert ppDepthStencilView, und die aktuelle Tiefenschablonenansicht bleibt gebunden.

  3. NumUAVs == D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    In diesem Fall bindet OMSetRenderTargetsAndUnorderedAccessViews nur RTVs und DSV.

    Die folgenden Bedingungen müssen erfüllt sein, damit OMSetRenderTargetsAndUnorderedAccessViews erfolgreich ist und dass die Laufzeit die Bindungsinformationen an den Treiber übergibt:

    • NumRTVs<= 8
    • In ppRenderTargetViews dürfen keine Konflikte auftreten.
    • ppDepthStencilView muss mit den Renderzielansichten übereinstimmen. Weitere Informationen zu Ressourcensichten finden Sie unter Einführung in eine Ressource in Direct3D 11.
    OMSetRenderTargetsAndUnorderedAccessViews hebt die Bindung an die folgenden Elemente auf:
    • Alle UAVs in Slots <NumRTVs
    • Alle UAVs, die mit rtVs in ppRenderTargetViews in Konflikt sind
    • Alle aktuell gebundenen Ressourcen (SOTargets, CS UAVs, SRVs), die mit ppRenderTargetViews in Konflikt sind
    OMSetRenderTargetsAndUnorderedAccessViews bindet ppRenderTargetViews und ppDepthStencilView.

    OMSetRenderTargetsAndUnorderedAccessViews ignoriert UAVStartSlot.

Windows Phone 8: Diese API wird unterstützt.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile d3d11.h
Bibliothek D3D11.lib

Weitere Informationen

ID3D11DeviceContext