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.
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äß:
-
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.
- 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.
-
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.
- 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 ignoriert ppDepthStencilView, und die aktuelle Tiefenschablonenansicht bleibt gebunden.
-
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.
- 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 ignoriert UAVStartSlot.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | d3d11.h |
Bibliothek | D3D11.lib |