PFND3D11_1DDI_RESOURCECOPYREGION Rückruffunktion (d3d10umddi.h)

Kopiert einen Quellunterressourcenbereich an einen Speicherort in einer Zielunterressource.

Syntax

PFND3D11_1DDI_RESOURCECOPYREGION Pfnd3d111DdiResourcecopyregion;

void Pfnd3d111DdiResourcecopyregion(
       D3D10DDI_HDEVICE unnamedParam1,
       D3D10DDI_HRESOURCE unnamedParam2,
       UINT unnamedParam3,
       UINT unnamedParam4,
       UINT unnamedParam5,
       UINT unnamedParam6,
       D3D10DDI_HRESOURCE unnamedParam7,
       UINT unnamedParam8,
       const D3D10_DDI_BOX *unnamedParam9,
  [in] UINT CopyFlags
)
{...}

Parameter

unnamedParam1

hDevice [in]

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

unnamedParam2

hDstResource [in]

Ein Handle für die Zielressource, in die kopiert werden soll.

unnamedParam3

DstSubresource [in]

Ein Index, der die Zielunterressource angibt, in die kopiert werden soll.

unnamedParam4

DstX [in]

Die x-Koordinate der Zielunterressource.

unnamedParam5

DstY [in]

Die y-Koordinate der Zielunterressource. Für eindimensionale (1D)-Unterressourcen wird DstY auf Null festgelegt.

unnamedParam6

DstZ [in]

Die Z-Koordinate der Zielunterressource. Für eindimensionale (1D) und zweidimensionale (2D)-Unterressourcen wird DstZ auf Null festgelegt.

unnamedParam7

hSrcResource [in]

Ein Handle für die Quellressource, aus der kopiert werden soll.

unnamedParam8

SrcSubresource [in]

Ein Index, der die Quellunterressource angibt, aus der kopiert werden soll.

unnamedParam9

pSrcBox [in, optional]

Ein Zeiger auf eine D3D10_DDI_BOX-Struktur , die ein Feld angibt, das auf die Quell- oder Zielunterressource passt. Wenn pSrcBoxNULL ist, sollte der Treiber die gesamte Quellunterresouce in das Ziel kopieren.

Wenn die Member der D3D10_DDI_BOX-Struktur so sind, dass left>=right, top>=bottom oder front>=back, dann wird pSrcBox als leer betrachtet, und ResourceCopyRegion(D3D11_1) darf keinen Kopiervorgang ausführen.

[in] CopyFlags

Ein -Wert, der Merkmale des Kopiervorgangs als bitweises OR der Werte im D3D11_1_DDI_COPY_FLAGS-Enumerationstyp angibt.

Rückgabewert

Keine

Bemerkungen

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

Die Microsoft Direct3D-Runtime ruft die ResourceCopyRegion(D3D11_1) -Funktion des Benutzermodus-Anzeigetreibers auf, um den Treiber zu informieren, aus der angegebenen Quellunterressourcenregion an einen Speicherort auf der angegebenen Zielunterressource zu kopieren. Die Quell- und Zielunterressourcen können dieselbe Unterressource derselben Ressource sein. Sowohl Quell- als auch Zielressourcen müssen derselbe Ressourcentyp sein und Formattypen (DXGI_FORMAT typisierte Werte) aufweisen, die ineinander konvertiert werden können.

Für Puffer müssen alle Koordinaten in Bytes sein. Während für Texturen alle Koordinaten in Pixeln vorliegen müssen. Das Feld, auf das der pSrcBox-Parameter verweist, darf sich nicht über die Ränder des Quellunterressourcenbereichs oder der Zielunterressource erstrecken. Quell- und Zielressource dürfen derzeit nicht zugeordnet werden. Darüber hinaus schränken die Ressourcenerstellungsflags ein, ob die Ressource am Kopiervorgang teilnehmen kann.

Für den Treiber sollte mit Ausnahme von D3DDDIERR_DEVICEREMOVED kein Fehler auftreten. Wenn der Treiber bei einem Aufruf der pfnSetErrorCb-Funktion einen Fehler mit Ausnahme von D3DDDIERR_DEVICEREMOVED übergibt, ermittelt die 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 beeinträchtigt (was in der Regel nicht geschehen sollte), kann der Treiber D3DDDIERR_DEVICEREMOVED zurückgeben.

Der Treiber kann eine ResourceCopyRegion(D3D11_1)- Funktion implementieren, die eine switch-Anweisung zum Verarbeiten von Kopier- und Konvertierungsvorgängen enthalten kann. Das heißt, der Treiber kann eine ResourceCopyRegion(D3D11_1) implementieren und das pfnResourceConvertRegion-Element der D3D11_1DDI_DEVICEFUNCS-Struktur so festlegen, dass er auf ResourceCopyRegion(D3D11_1) verweist, zusammen mit dem pfnResourceCopyRegion-Element von D3D11_1DDI_DEVICEFUNCS. Zur Verbesserung der Leistung kann der Treiber jedoch separate Funktionen ResourceCopyRegion(D3D11_1) und ResourceConvertRegion(D3D11_1) implementieren.

In den folgenden Abschnitten werden die Bedingungen für das Kopieren und Konvertieren aufgeführt:

Wird kopiert

Beim Kopieren stellt ResourceCopyRegion(D3D11_1) sicher, dass die Quell- und Zielressourcen über die CreateResource(D3D11) -Funktion des Treibers mit den folgenden Bedingungen erstellt wurden:

  • Die Zielressource wurde nicht mit dem D3D10_DDI_USAGE_IMMUTABLE-Wert erstellt, der im Member Verwendung der D3D11DDIARG_CREATERESOURCE-Struktur festgelegt wurde.
  • Wenn entweder für die Quell- oder Zielressource das D3D10_DDI_BIND_DEPTH_STENCIL Bit im BindFlags-Member des D3D10DDIARG_CREATERESOURCE festgelegt ist oder es sich um eine Ressource mit mehreren Stichproben handelt, überprüft ResourceCopyRegion(D3D11_1), ob der pSrcBox-ParameterNULL ist, während die Parameter DstX, DstY und DstZ 0 sind.
  • Die Unterressourcenindizes liegen im Bereich.
  • Für Koordinaten gelten Ausrichtungseinschränkungen.
  • Die Quell- und Zielressourcen sind nicht Teil derselben Unterressource.
  • Jedes Quell- und Zielressourcenformat, das im Format-Element von D3D11DDIARG_CREATERESOURCE angegeben wird, befindet sich in derselben typlosen Gruppe.
  • Die Quell- und Zielressourcen müssen die gleiche Anzahl von Stichproben und Qualitätsstufen aufweisen. mit Ausnahme von Ressourcen mit einzelsampigem Muster, die nur die gleiche Anzahl von Stichproben aufweisen dürfen.
ResourceCopyRegion(D3D11_1) stellt nicht sicher, dass das Quellfeld, das durch die Zieloffsets versetzt wird, vollständig auf die Ressource passt. ResourceCopyRegion(D3D11_1) stellt auch nicht sicher, dass derzeit keine Unterressourcen zugeordnet sind.

Konvertieren

Für die Konvertierung stellt ResourceCopyRegion(D3D11_1) sicher, dass die Quell- und Zielressourcen über die CreateResource(D3D11) -Funktion des Treibers mit den folgenden Bedingungen erstellt wurden:

  • Die Zielressource wurde nicht mit dem D3D10_DDI_USAGE_IMMUTABLE-Wert erstellt, der im Member Verwendung der D3D11DDIARG_CREATERESOURCE-Struktur festgelegt wurde.
  • Wenn entweder für die Quell- oder Zielressource das D3D10_DDI_BIND_DEPTH_STENCIL Bit im BindFlags-Member von D3D11DDIARG_CREATERESOURCE festgelegt ist oder es sich um eine Ressource mit mehreren Stichproben handelt, überprüft ResourceCopyRegion(D3D11_1), ob der pSrcBox-ParameterNULL ist, während die Parameter DstX, DstY und DstZ 0 sind.
  • Die Unterressourcenindizes liegen im Bereich.
  • Für Koordinaten gelten Ausrichtungseinschränkungen.
  • Die Quell- und Zielressourcen sind nicht Teil derselben Unterressource.
  • Jedes Quell- und Zielressourcenformat, das im Format-Element von D3D11DDIARG_CREATERESOURCE angegeben wird, befindet sich in derselben typlosen Gruppe.
  • Jedes Quell- und Zielressourcenformat, das im Format-Element von D3D11DDIARG_CREATERESOURCE angegeben wird, unterstützt den entsprechenden Konvertierungsvorgang.
  • Die Quell- und Zielressourcen müssen die gleiche Anzahl von Stichproben und Qualitätsstufen aufweisen. mit Ausnahme von Ressourcen mit einzelsampigem Muster, die nur die gleiche Anzahl von Stichproben aufweisen dürfen.
ResourceCopyRegion(D3D11_1) stellt nicht sicher, dass derzeit keine Unterressourcen zugeordnet sind. ResourceCopyRegion(D3D11_1) stellt auch nicht sicher, dass das Quellfeld, das durch die Zieloffsets versetzt wird, vollständig auf die Ressource passt.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8
Unterstützte Mindestversion (Server) Windows Server 2012
Zielplattform Desktop
Kopfzeile d3d10umddi.h (include D3d10umddi.h)

Weitere Informationen

CreateResource(D3D11)

D3D10_DDI_BOX

D3D11DDIARG_CREATERESOURCE

D3D11_1DDI_DEVICEFUNCS

D3D11_1_DDI_COPY_FLAGS

pfnSetErrorCb