ID3D11Device3::ReadFromSubresource-Methode (d3d11_3.h)

Kopiert Daten aus einer D3D11_USAGE_DEFAULT Textur, die mit ID3D11DeviceContext3::Map zugeordnet wurde, während ein NULL-D3D11_MAPPED_SUBRESOURCE Parameter bereitgestellt wird.

Syntax

void ReadFromSubresource(
  [out]          void            *pDstData,
  [in]           UINT            DstRowPitch,
  [in]           UINT            DstDepthPitch,
  [in]           ID3D11Resource  *pSrcResource,
  [in]           UINT            SrcSubresource,
  [in, optional] const D3D11_BOX *pSrcBox
);

Parameter

[out] pDstData

Typ: void*

Ein Zeiger auf die Zieldaten im Arbeitsspeicher.

[in] DstRowPitch

Typ: UINT

Die Größe einer Zeile der Zieldaten.

[in] DstDepthPitch

Typ: UINT

Die Größe eines Tiefenslices der Zieldaten.

[in] pSrcResource

Typ: ID3D11Resource*

Ein Zeiger auf die Quellressource (siehe ID3D11Resource).

[in] SrcSubresource

Typ: UINT

Ein nullbasierter Index, der die Zielunterressource identifiziert. Weitere Informationen finden Sie unter D3D11CalcSubresource.

[in, optional] pSrcBox

Typ: const D3D11_BOX*

Ein Zeiger auf ein Feld, das den Teil der Zielunterressource definiert, aus der die Ressourcendaten kopiert werden sollen. Wenn NULL, werden die Daten aus der Zielunterressource ohne Offset gelesen. Die Dimensionen des Ziels müssen dem Ziel entsprechen (siehe D3D11_BOX).

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 diese Methode keinen Vorgang aus.

Rückgabewert

Keine

Bemerkungen

Die bereitgestellte Ressource muss eine D3D11_USAGE_DEFAULT Textur sein, die durch einen vorherigen Aufruf von ID3D11DeviceContext3::Map zum Schreiben zugeordnet wurde, während ein NULL-D3D11_MAPPED_SUBRESOURCE-Parameter bereitgestellt wurde.

Diese API ist für das Aufrufen mit hoher Frequenz vorgesehen. Aufrufer können den Arbeitsspeicher reduzieren, indem sie iterative Aufrufe ausführen, die progressive Bereiche der Textur aktualisieren, während sie während jedes Aufrufs einen kleinen Puffer bereitstellen. Es ist jedoch am effizientesten, genügend Große Regionen anzugeben, da D3D dadurch ganze Cachezeilen in der Textur füllen kann, bevor er zurückgibt.

Stellen Sie aus Effizienzgründen sicher, dass die Grenzen und die Ausrichtung der Blöcke innerhalb des Felds horizontal ( 64 / [Bytes pro Pixel] ) Pixel sind. Vertikale Begrenzungen und Ausrichtung sollten 2 Zeilen betragen, außer wenn Formate mit 1 Byte pro Pixel verwendet werden. In diesem Fall werden 4 Zeilen empfohlen. Einzelne Tiefenslices pro Aufruf werden effizient verarbeitet. Es wird empfohlen, aber nicht notwendig, Zeiger und Schritte bereitzustellen, die 128 Byte ausgerichtet sind.

Beim Lesen aus Untergeordneten Mipmap-Ebenen wird empfohlen, eine größere Breite und Höhe als oben beschrieben zu verwenden. Dies liegt daran, dass kleine Mipmap-Ebenen tatsächlich in einem größeren Speicherblock gespeichert werden können, mit einer undurchsichtigen Menge an Kompensation, die die Ausrichtung an Cachezeilen beeinträchtigen kann.

Anforderungen

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

Weitere Informationen

ID3D11Geräte3