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 |