ID3D11DeviceContext::CopyResource-Methode (d3d11.h)

Kopieren Sie den gesamten Inhalt der Quellressource mithilfe der GPU in die Zielressource.

Syntax

void CopyResource(
  [in] ID3D11Resource *pDstResource,
  [in] ID3D11Resource *pSrcResource
);

Parameter

[in] pDstResource

Typ: ID3D11Resource*

Ein Zeiger auf die ID3D11Resource-Schnittstelle , die die Zielressource darstellt.

[in] pSrcResource

Typ: ID3D11Resource*

Ein Zeiger auf die ID3D11Resource-Schnittstelle , die die Quellressource darstellt.

Rückgabewert

Keine

Bemerkungen

Diese Methode ist insofern ungewöhnlich, als sie dazu führt, dass die GPU den Kopiervorgang ausführt (ähnlich einem Memcpy durch die CPU). Daher gibt es einige Einschränkungen, die zur Verbesserung der Leistung entwickelt wurden. Für instance die Quell- und Zielressourcen:

  • Es müssen unterschiedliche Ressourcen sein.
  • Muss der gleiche Typ sein.
  • Muss identische Abmessungen aufweisen (einschließlich Breite, Höhe, Tiefe und Größe nach Bedarf).
  • Muss über kompatible DXGI-Formate verfügen, was bedeutet, dass die Formate identisch oder mindestens aus derselben Typgruppe sein müssen. Beispielsweise kann eine DXGI_FORMAT_R32G32B32_FLOAT Textur in eine DXGI_FORMAT_R32G32B32_UINT Textur kopiert werden, da sich beide Formate in der DXGI_FORMAT_R32G32B32_TYPELESS Gruppe befinden. CopyResource kann zwischen einigen Formattypen kopieren. Weitere Informationen finden Sie unter Formatkonvertierung mit Direct3D 10.1.
  • Kann derzeit nicht zugeordnet werden.
CopyResource unterstützt nur das Kopieren. Es unterstützt keine Stretch-, Farbtasten- oder Blend-Elemente. CopyResource kann die Ressourcendaten zwischen einigen Formattypen neu interpretieren. Weitere Informationen finden Sie unter Formatkonvertierung mit Direct3D 10.1.

Sie können keine unveränderliche Ressource als Ziel verwenden. Sie können eine Tiefenschablonenressource entweder als Quelle oder als Ziel verwenden, sofern die Featureebene D3D_FEATURE_LEVEL_10_1 oder höher ist. Für Featureebenen 9_x können Ressourcen, die mit dem flag D3D11_BIND_DEPTH_STENCIL erstellt wurden, nur als Quelle für CopyResource verwendet werden. Ressourcen, die mit der Multisampling-Funktion erstellt wurden (siehe DXGI_SAMPLE_DESC), können nur dann als Quelle und Ziel verwendet werden, wenn sowohl Quelle als auch Ziel identische Anzahl und Qualität mit mehreren Zählern aufweisen. Wenn sich Quelle und Ziel in der Anzahl und Qualität mit mehreren Zählern unterscheiden oder wenn eine multisampled ist und der andere nicht multisampled ist, schlägt der Aufruf von ID3D11DeviceContext::CopyResource fehl. Verwenden Sie ID3D11DeviceContext:ResolveSubresource , um eine multisampled-Ressource in eine Ressource aufzulösen, die nicht multisampled ist.

Die -Methode ist ein asynchroner Aufruf, der der Befehlspufferwarteschlange hinzugefügt werden kann. Dadurch wird versucht, Pipeline-Würfe zu entfernen, die beim Kopieren von Daten auftreten können. Weitere Informationen finden Sie unter Überlegungen zur Leistung.

Es wird empfohlen, ID3D11DeviceContext::CopySubresourceRegion stattdessen zu verwenden, wenn Sie nur einen Teil der Daten in einer Ressource kopieren müssen.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile d3d11.h
Bibliothek D3D11.lib

Weitere Informationen

ID3D11DeviceContext

ID3D11Resource