ID3D10Device::CopySubresourceRegion-Methode (d3d10.h)
Kopieren Sie eine Region aus einer Quellressource in eine Zielressource.
Syntax
void CopySubresourceRegion(
[in] ID3D10Resource *pDstResource,
[in] UINT DstSubresource,
[in] UINT DstX,
[in] UINT DstY,
[in] UINT DstZ,
[in] ID3D10Resource *pSrcResource,
[in] UINT SrcSubresource,
[in] const D3D10_BOX *pSrcBox
);
Parameter
[in] pDstResource
Typ: ID3D10Resource*
Ein Zeiger auf die Zielressource (siehe ID3D10Resource).
[in] DstSubresource
Typ: UINT
Unterressourcenindex des Ziels.
[in] DstX
Typ: UINT
Die x-Koordinate der oberen linken Ecke des Zielbereichs.
[in] DstY
Typ: UINT
Die y-Koordinate der oberen linken Ecke des Zielbereichs.
[in] DstZ
Typ: UINT
Die z-Koordinate der oberen linken Ecke des Zielbereichs. Bei einer 1D- oder 2D-Unterressource muss dies null sein.
[in] pSrcResource
Typ: ID3D10Resource*
Ein Zeiger auf die Quellressource (siehe ID3D10Resource).
[in] SrcSubresource
Typ: UINT
Unterressourcenindex der Quelle.
[in] pSrcBox
Typ: const D3D10_BOX*
Ein 3D-Feld (siehe D3D10_BOX), das die zu kopierenden Quellunterressourcen definiert. Bei NULL wird die gesamte Quellunterressource kopiert. Das Feld muss in die Quellressource passen.
Ein leeres Feld führt zu einem No-Op. Ein Feld ist leer, wenn der obere Wert größer oder gleich dem unteren Wert oder der linke Wert größer oder gleich dem rechten Wert ist oder der vordere Wert größer oder gleich dem back-Wert ist. Wenn das Feld leer ist, führt CopySubresourceRegion keinen Kopiervorgang aus.
Rückgabewert
Keine
Bemerkungen
Das Quellfeld muss innerhalb der Größe der Quellressource sein. Der Zielspeicherort ist ein absoluter Wert (kein relativer Wert). Der Zielspeicherort kann vom Quellspeicherort versetzt werden. Die Größe der zu kopierenden Region (einschließlich des Zielspeicherorts) muss jedoch in die Zielressource passen.
Wenn es sich bei den Ressourcen um Puffer handelt, sind alle Koordinaten in Byte; Wenn es sich bei den Ressourcen um Texturen handelt, befinden sich alle Koordinaten in Texel.
D3D10CalcSubresource ist eine Hilfsfunktion zum Berechnen von Unterressourcenindizes.
CopySubresourceRegion führt die Kopie auf der GPU aus (ähnlich einem Memcpy durch die CPU). Daher müssen die Quell- und Zielressourcen die folgenden Kriterien erfüllen:
- Müssen unterschiedliche Unterressourcen sein (obwohl sie aus derselben Ressource stammen können).
- Muss der gleiche Typ sein.
- Muss kompatible Formate aufweisen (die Formate müssen entweder identisch sein oder aus derselben Typgruppe stammen). Beispielsweise kann eine DXGI_FORMAT_R32G32B32_FLOAT Textur in eine DXGI_FORMAT_R32G32B32_UINT Textur kopiert werden, da sich beide Formate in der gruppe DXGI_FORMAT_R32G32B32_TYPELESS befinden. Ab Direct3D 10.1 kann CopySubresourceRegion zwischen einigen Formattypen kopieren. Weitere Informationen finden Sie unter Formatkonvertierung mit Direct3D 10.1.
- Möglicherweise wird derzeit nicht zugeordnet.
Wenn Ihre App eine gesamte Ressource kopieren muss, wird empfohlen, stattdessen ID3D10Device::CopyResource zu verwenden.
CopySubresourceRegion ist ein asynchroner Aufruf, den die Runtime der Befehlspufferwarteschlange hinzufügen kann. Dieses asynchrone Verhaltenaufbemerkt, um Pipeline-Stagnierungen zu entfernen, die beim Kopieren von Daten auftreten können. Weitere Informationen finden Sie unter Überlegungen zur Leistung .
Unterschiede zwischen Direct3D 10 und Direct3D 10.1: Direct3D 10 weist die folgenden Einschränkungen auf:
|
Beispiel
Der folgende Codeausschnitt kopiert ein Feld (bei (120,100),(200,220)) aus einer Quelltextur in eine Region (130.120),(210.240) in einer Zieltextur.
D3D10_BOX sourceRegion;
sourceRegion.left = 120;
sourceRegion.right = 200;
sourceRegion.top = 100;
sourceRegion.bottom = 220;
sourceRegion.front = 0;
sourceRegion.back = 1;
pd3dDevice->CopySubresourceRegion( pDestTexture, 0, 130, 120, 0, pSourceTexture, 0, &sourceRegion );
Beachten Sie, dass bei einer 2D-Textur die Vorder- und Rückseite immer auf 0 bzw. 1 festgelegt sind.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | d3d10.h |
Bibliothek | D3D10.lib |