Freigeben über


PFND3D11DDI_SETRENDERTARGETS Rückruffunktion (d3d10umddi.h)

Die SetRenderTargets(D3D11) -Funktion legt Renderzieloberflächen fest.

Syntax

PFND3D11DDI_SETRENDERTARGETS Pfnd3d11ddiSetrendertargets;

void Pfnd3d11ddiSetrendertargets(
  [in] D3D10DDI_HDEVICE unnamedParam1,
  [in] const D3D10DDI_HRENDERTARGETVIEW *unnamedParam2,
  [in] UINT NumRTVs,
  [in] UINT ClearSlots,
  [in] D3D10DDI_HDEPTHSTENCILVIEW unnamedParam5,
  [in] const D3D11DDI_HUNORDEREDACCESSVIEW *unnamedParam6,
  [in] const UINT *unnamedParam7,
       UINT UAVStartSlot,
  [in] UINT NumUAVs,
  [in] UINT UAVRangeStart,
  [in] UINT UAVRangeSize
)
{...}

Parameter

[in] unnamedParam1

hDevice: Ein Handle für das Anzeigegerät (Grafikkontext).

[in] unnamedParam2

phRenderTargetView: Ein Array von Handles für die RTV-Objekte (Renderzielansicht), die festgelegt werden sollen. Beachten Sie, dass einige Handle-Werte NULL sein können.

[in] NumRTVs

Die Anzahl der Elemente im Array, die in phRenderTargetView für die festzulegenden RTVs bereitgestellt wird.

[in] ClearSlots

Die Anzahl der RTV-Objekte, die die Bindung aufheben sollen; Das heißt, diese Renderzielansichtsobjekte, die zuvor gebunden waren, aber nicht mehr gebunden werden müssen.

[in] unnamedParam5

hDepthStencilView: Ein Handle für den festzulegenden Tiefenschablonenpuffer.

[in] unnamedParam6

phUnorderedAccessView: Ein Array von Handles für die festzulegenden UAV-Objekte (Unordered Access View).

[in] unnamedParam7

pUAVInitialCounts: Ein Array von Anfüge- und Nutzungspufferoffsets. Dieser Parameter ist nur für UAVs des phUnorderedAccessView-Arrays relevant, die entweder mit D3D11_DDI_BUFFER_UAV_FLAG_APPEND oder D3D11_DDI_BUFFER_UAV_FLAG_COUNTER im Flags-Member der D3D11DDIARG_BUFFER_UNORDEREDACCESSVIEW-Struktur erstellt wurden, als die UAV erstellt wurde. andernfalls wird sie ignoriert. Wenn ein Element in diesem Array auf -1 festgelegt ist, sollte der aktuelle Offset für diesen Anfüge- und Nutzungspuffer beibehalten werden. Jeder andere Wert bewirkt, dass der Treiber den ausgeblendeten Indikator für diesen UAV-Anfüge- und Pufferverbrauch fest legt.

UAVStartSlot

Index des ersten zu bindenden UAV. UAVStartSlot muss mindestens so groß sein wie der NumRTVs-Parameter .

Hinweis

Für RTVs und UAVs ist nur ein gemeinsamer Satz von Bindungspunkten vorhanden. RTVs sind zuerst gebunden, gefolgt von UAVs.

[in] NumUAVs

Die Anzahl der zu bindenden UAVs.

[in] UAVRangeStart

Das erste UAV im Satz aller aktualisierten UAVs (einschließlich NULL-Bindungen ).

[in] UAVRangeSize

Die Anzahl der UAVs im Satz aller aktualisierten UAVs (einschließlich NULL-Bindungen ).

Rückgabewert

Keine

Bemerkungen

Ressourcendeskriptoren wie RTVs und UAVs müssen gebunden sein (in Eingabeslots gesetzt), bevor Shader zum Lesen oder Schreiben darauf zugreifen können.

Die folgende Abbildung zeigt ein Beispiel mit fünf Ressourcen.

RTV- und UAV-Beispiel.

Im obigen Beispiel:

  • NumRTVs = 2
  • UAVStartSlot = 2
  • NumUAVs = 3

NumUAVs und UAVStartSlot geben an, welcher Bereich im UAVs-Array Änderungen in Bezug auf den Zustand enthält, der zuvor gebunden war. Beachten Sie, dass die Punkte im Bereich möglicherweise unverändert sein können.

Die Parameter UAVRangeStart und UAVRangeSize sind eine Benutzerfreundlichkeit, die die Spanne dessen, was sich tatsächlich geändert hat , zeigen, da der Direct3D DDI immer alles bindet (einschließlich der Nicht geänderten Elemente). Die D3D11-Runtime formuliert sie im Auftrag der Anwendung als zusätzliche Informationen für Treiberautoren als Hinweise für eine mögliche Optimierung. In der Regel ruft die D3D11-Runtime diese Funktion mit UAVRangeStart - und UAVRangeSize-Werten auf, um den gesamten Bereich anzugeben. Verwenden des obigen Beispiels:

  • Um den gesamten Bereich auszuwählen (es wird keine Änderung angenommen), UAVRangeStart = 2 und UAVRangeSize = 3.
  • Um anzugeben, dass sich nur die erste UAV geändert hat, ist UAVRangeStart = 2 und UAVRangeSize = 1.

Der Treiber kann die Rückruffunktion pfnSetErrorCb verwenden, um einen Fehlercode festzulegen.

Für den Treiber sollte kein Fehler auftreten, mit Ausnahme von D3DDDIERR_DEVICEREMOVED. Wenn der Treiber bei einem Aufruf der PfnSetErrorCb-Funktion einen Fehler mit Ausnahme von D3DDDIERR_DEVICEREMOVED übergibt, ermittelt die Microsoft Direct3D-Runtime daher, dass der Fehler kritisch ist. Selbst wenn das Gerät entfernt wurde, muss der Treiber nicht D3DDDIERR_DEVICEREMOVED zurückgeben. Wenn die Geräteentfernung jedoch den Betrieb von SetRenderTargets beeinträchtigt hat (was normalerweise nicht geschehen sollte), kann der Treiber D3DDDIERR_DEVICEREMOVED zurückgeben.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) SetRenderTargets(D3D11) wird ab dem Windows 7-Betriebssystem unterstützt.
Zielplattform Desktop
Kopfzeile d3d10umddi.h (einschließlich D3d10umddi.h)

Weitere Informationen

D3D11DDIARG_BUFFER_UNORDEREDACCESSVIEW

D3D11DDI_DEVICEFUNCS

pfnSetErrorCb