Freigeben über


ID3D10Device::CopyResource-Methode (d3d10.h)

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

Syntax

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

Parameter

[in] pDstResource

Typ: ID3D10Resource*

Ein Zeiger auf die Zielressource (siehe ID3D10Resource).

[in] pSrcResource

Typ: ID3D10Resource*

Ein Zeiger auf die Quellressource (siehe ID3D10Resource).

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 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. Ab Direct3D 10.1 kann CopyResource zwischen einigen Formattypen kopieren. Weitere Informationen finden Sie unter Formatkonvertierung mit Direct3D 10.1.
  • Möglicherweise wird derzeit nicht zugeordnet.
CopyResource unterstützt nur das Kopieren. Es werden keine Stretch-, Farb-, Blend- oder Formatkonvertierungen unterstützt. Ab Direct3D 10.1 kann CopyResource die Ressourcendaten zwischen einigen Formattypen neu interpretieren. Weitere Informationen finden Sie unter Formatkonvertierung mit Direct3D 10.1.

Unveränderliche Und Tiefenschablonenressourcen können nicht als Ziel verwendet werden. Ressourcen, die mit der Multisampling-Funktion erstellt wurden, können weder als Quelle noch als Ziel verwendet werden.

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 Leistungsüberlegungen .

Eine Anwendung, die nur einen Teil der Daten in einer Ressource kopieren muss, sollte stattdessen ID3D10Device::CopySubresourceRegion verwenden.

Unterschiede zwischen Direct3D 10 und Direct3D 10.1:

Direct3D 10.1 ermöglicht die Verwendung von Tiefenschablonenressourcen als Quelle oder Ziel. Direct3D 10.1 ermöglicht die Verwendung mehrerer Ressourcen als Quelle und Ziel nur, wenn quelle und 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 einer von ihnen multisampled ist und der andere nicht multisampled ist, schlägt der Aufruf von ID3D10Device::CopyResource fehl.

Es ist möglich, zwischen vorstrukturierten+typisierten Ressourcen und blockkomprimierten Texturen zu kopieren. Siehe Formatkonvertierung mit Direct3D 10.1.

Anforderungen

   
Zielplattform Windows
Kopfzeile d3d10.h
Bibliothek D3D10.lib

Weitere Informationen

ID3D10Geräte

ID3D10Resource-Schnittstelle