Share via


PFND3D10DDI_RESOURCECOPYREGION Rückruffunktion (d3d10umddi.h)

Die ResourceCopyRegion-Funktion kopiert einen Quellunterressourcenbereich an einen Speicherort in einer Zielunterquelle.

Syntax

PFND3D10DDI_RESOURCECOPYREGION Pfnd3d10ddiResourcecopyregion;

void Pfnd3d10ddiResourcecopyregion(
  D3D10DDI_HDEVICE unnamedParam1,
  D3D10DDI_HRESOURCE unnamedParam2,
  UINT unnamedParam3,
  UINT unnamedParam4,
  UINT unnamedParam5,
  UINT unnamedParam6,
  D3D10DDI_HRESOURCE unnamedParam7,
  UINT unnamedParam8,
  const D3D10_DDI_BOX *unnamedParam9
)
{...}

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 Zielunterquelle angibt, in die kopiert werden soll.

unnamedParam4

DstX [in]

Die x-Koordinate der Zielunterquelle.

unnamedParam5

DstY [in]

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

unnamedParam6

DstZ [in]

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

unnamedParam7

hSrcResource [in]

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

unnamedParam8

SrcSubresource [in]

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

unnamedParam9

pSrcBox [in, optional]

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

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

Rückgabewert

Keine

Bemerkungen

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

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

Für Puffer müssen alle Koordinaten in Bytes sein. während für Texturen alle Koordinaten in Pixeln sein müssen. Das Feld, auf das der pSrcBox-Parameter verweist, darf sich nicht über die Kanten der Quellunterressourcenregion oder der Zielunterquelle erstrecken. Die Quelle und die Zielressource dürfen derzeit nicht zugeordnet werden. Darüber hinaus beschränken die Ressourcenerstellungsflags, ob die Ressource am Kopiervorgang teilnehmen kann.

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 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 ResourceCopyRegion beeinträchtigt hat (was normalerweise nicht geschehen sollte), kann der Treiber D3DDDIERR_DEVICEREMOVED zurückgeben.

Hinweis Die folgenden Abschnitte gelten nur für Microsoft Direct3D Version 10.1 und höher (d. h. Windows Vista mit Service Pack 1 (SP1) und höher sowie Windows Server 2008 und höher).
 
Der Treiber kann eine ResourceCopyRegion-Funktion implementieren, die eine Switch-Anweisung zum Verarbeiten des Kopierens und Konvertierens enthalten kann. Das heißt, der Treiber kann eine ResourceCopyRegion implementieren und das pfnResourceConvertRegion-Element der D3D10_1DDI_DEVICEFUNCS-Struktur so festlegen, dass er zusammen mit dem pfnResourceCopyRegion-Member von D3D10_1DDI_DEVICEFUNCS auf ResourceCopyRegion verweist. Um die Leistung zu verbessern, kann der Treiber jedoch separate ResourceCopyRegion - und ResourceConvertRegion-Funktionen implementieren.

Die Direct3D 10.1-Version von ResourceCopyRegion weist einen wesentlichen Funktionsunterschied zur Direct3D 10.0-Version in Bezug auf das ResourceDimension-Mitglied von D3D10DDIARG_CREATERESOURCE für die Quell- und Zielressourcen auf, die in Aufrufen der CreateResource(D3D10) -Funktion des Treibers erstellt wurden. Für die Direct3D 10.0-Version von ResourceCopyRegion muss das ResourceDimension-Mitglied von D3D10DDIARG_CREATERESOURCE für die Quell- und Zielressourcen übereinstimmen. Die Direct3D 10.1-Version von ResourceCopyRegion ermöglicht eine leichte Entspannung für den ResourceDimension-Member von D3D10DDIARG_CREATERESOURCE für die Quell- und Zielressourcen. Die Direct3D 10.1-Version von ResourceCopyRegion ermöglicht das Kopieren von Tex2D-Quellressourcen auf TexCube-Zielressourcen oder TexCube-Quellressourcen auf Tex2D-Zielressourcen. Darüber hinaus ist die Unterscheidung zwischen TexCube auf Ressourcenebene in Direct3D Version 10.1 weg. Die Direct3D 10.1-Version von ResourceCopyRegion gibt nur an, ob ein TexCube kopiert werden kann. In Direct3D, Version 10.0, beinhalteten das Kopieren einer Ressource, die Validierung eines mehrfachen Renderziels usw. (d. h. verschiedene Vorgänge, bei denen der Ressourcentyp identisch sein musste) alle die Unterscheidung von TexCube, um den Ressourcentyp zu berücksichtigen. In Direct3D Version 10.1 kann die Runtime nur Tex2D bestimmen.

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

Wird kopiert

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

  • Die Zielressource wurde nicht mit dem D3D10_DDI_USAGE_IMMUTABLE-Wert erstellt, der im Member Usage der D3D10DDIARG_CREATERESOURCE-Struktur festgelegt ist.
  • Wenn entweder die Quell- oder Zielressource das D3D10_DDI_BIND_DEPTH_STENCIL Bit im BindFlags-Member des D3D10DDIARG_CREATERESOURCE festgelegt hat oder eine Ressource mit mehreren Stichproben ist, überprüft ResourceCopyRegion , ob der pSrcBox-ParameterNULL ist, während die Parameter DstX, DstY und DstZ 0 sind.
  • Die Unterressourcenindizes befinden sich im Bereich.
  • Für Koordinaten gelten Ausrichtungseinschränkungen.
  • Die Quell- und Zielressourcen sind nicht Teil derselben Unterressource.
  • Jedes Quell- und Zielressourcenformat, das im Element Format von D3D10DDIARG_CREATERESOURCE angegeben ist, 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 einzeler Stichprobe, die nur die gleiche Anzahl von Stichproben aufweisen dürfen.
ResourceCopyRegion stellt nicht sicher, dass das Quellfeld, das durch die Zieloffsets versetzt wird, vollständig auf die Ressource passt. ResourceCopyRegion stellt außerdem nicht sicher, dass derzeit keine Unterressourcen zugeordnet sind.

Konvertieren

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

  • Die Zielressource wurde nicht mit dem D3D10_DDI_USAGE_IMMUTABLE-Wert erstellt, der im Member Usage der D3D10DDIARG_CREATERESOURCE-Struktur festgelegt ist.
  • Wenn entweder die Quell- oder Zielressource das D3D10_DDI_BIND_DEPTH_STENCIL Bit im BindFlags-Member des D3D10DDIARG_CREATERESOURCE festgelegt hat oder eine Ressource mit mehreren Stichproben ist, überprüft ResourceCopyRegion , ob der pSrcBox-ParameterNULL ist, während die Parameter DstX, DstY und DstZ 0 sind.
  • Die Unterressourcenindizes befinden sich im Bereich.
  • Für Koordinaten gelten Ausrichtungseinschränkungen.
  • Die Quell- und Zielressourcen sind nicht Teil derselben Unterressource.
  • Jedes Quell- und Zielressourcenformat, das im Element Format von D3D10DDIARG_CREATERESOURCE angegeben ist, befindet sich in derselben typlosen Gruppe.
  • Jedes Quell- und Zielressourcenformat, das im Element Format von D3D10DDIARG_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 einzeler Stichprobe, die nur die gleiche Anzahl von Stichproben aufweisen dürfen.
ResourceCopyRegion stellt nicht sicher, dass derzeit keine Unterressourcen zugeordnet werden. ResourceCopyRegion 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) Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Zielplattform Desktop
Kopfzeile d3d10umddi.h (einschließlich D3d10umddi.h)

Weitere Informationen

D3D10DDI_DEVICEFUNCS

D3D10_DDI_BOX

pfnSetErrorCb