Freigeben über


PFND3D10DDI_RESOURCECOPY Rückruffunktion (d3d10umddi.h)

Die ResourceCopy-Funktion kopiert eine gesamte Quellressource in eine Zielressource.

Syntax

PFND3D10DDI_RESOURCECOPY Pfnd3d10ddiResourcecopy;

void Pfnd3d10ddiResourcecopy(
  D3D10DDI_HDEVICE unnamedParam1,
  D3D10DDI_HRESOURCE unnamedParam2,
  D3D10DDI_HRESOURCE unnamedParam3
)
{...}

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

hSrcResource [in]

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

Rückgabewert

Keine

Bemerkungen

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

Die Microsoft Direct3D-Runtime ruft die ResourceCopy-Funktion des Benutzermodusanzeigetreibers auf, um den Treiber zu informieren, von der angegebenen Quellressource in die angegebene Zielressource zu kopieren. Quell- und Zielressourcen können nicht dieselbe Ressource sein. Sowohl Quell- als auch Zielressourcen müssen derselbe Ressourcentyp sein und die gleichen Dimensionen aufweisen. Die Formattypen (DXGI_FORMAT werte) beider Ressourcen müssen ineinander umgewandelt werden können. 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 ResourceCopy 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 ResourceCopy-Funktion implementieren, die eine Switch-Anweisung zum Verarbeiten des Kopierens und Konvertierens enthalten kann. Das heißt, der Treiber kann ein ResourceCopy-Element implementieren und festlegen, dass das pfnResourceConvert-Element der D3D10_1DDI_DEVICEFUNCS-Struktur zusammen mit dem pfnResourceCopy-Member von D3D10_1DDI_DEVICEFUNCS auf ResourceCopy verweist. Um die Leistung zu verbessern, kann der Treiber jedoch separate ResourceCopy - und ResourceConvert-Funktionen implementieren.

Die Direct3D 10.1-Version von ResourceCopy weist einen wesentlichen Funktionsunterschied zur Direct3D 10.0-Version in Bezug auf das ResourceDimension-Element 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 ResourceCopy muss das ResourceDimension-Mitglied von D3D10DDIARG_CREATERESOURCE für die Quell- und Zielressourcen übereinstimmen. Die Direct3D 10.1-Version von ResourceCopy ermöglicht eine leichte Entspannung für das ResourceDimension-Element von D3D10DDIARG_CREATERESOURCE für die Quell- und Zielressourcen. Die Direct3D 10.1-Version von ResourceCopy 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 ResourceCopy 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 ResourceCopy 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.
  • Die Quell- und Zielressourcen wurden mit demselben Ressourcentyp und derselben Dimensionalität (Puffer, eindimensionale (1D-Textur usw.) erstellt, indem sie denselben Wert im ResourceDimension-Member von D3D10DDIARG_CREATERESOURCE festlegen.
  • Die Quell- und Zielressourcen sind nicht Teil derselben Ressource.
  • 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.
ResourceCopy stellt nicht sicher, dass derzeit keine Unterressourcen zugeordnet werden.

Konvertieren

Für die Konvertierung stellt ResourceCopy 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.
  • Die Quell- und Zielressourcen wurden mit demselben Ressourcentyp (Puffer, eindimensionale (1D-Textur usw.) erstellt, indem sie denselben Wert im ResourceDimension-Member von D3D10DDIARG_CREATERESOURCE festlegen.
  • Die Dimensionen der Quell- und Zielressourcen stimmen für die Konvertierung überein.
  • Die Quell- und Zielressourcen sind nicht Teil derselben Ressource.
  • Jedes Quell- und Zielressourcenformat, das im Element Format von D3D10DDIARG_CREATERESOURCE angegeben wird, unterstützt den entsprechenden Konvertierungsvorgang. Für komprimierte Ressourcen mit Mipped-Block werden alle Dimensionen auf eine Leistung von zwei überprüft.
  • 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.
ResourceCopy stellt nicht sicher, dass derzeit keine Unterressourcen zugeordnet werden.

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

CreateResource(D3D10)

D3D10DDIARG_CREATERESOURCE

D3D10DDI_DEVICEFUNCS

D3D10_1DDI_DEVICEFUNCS

pfnSetErrorCb