IDirect3DDevice9::UpdateTexture-Methode (d3d9.h)

Updates die modifiziert Teile einer Textur.

Syntax

HRESULT UpdateTexture(
  [in] IDirect3DBaseTexture9 *pSourceTexture,
  [in] IDirect3DBaseTexture9 *pDestinationTexture
);

Parameter

[in] pSourceTexture

Typ: IDirect3DBaseTexture9*

Zeiger auf eine IDirect3DBaseTexture9-Schnittstelle , die die Quelltextur darstellt. Die Quelltextur muss sich im Systemspeicher (D3DPOOL_SYSTEMMEM) befinden.

[in] pDestinationTexture

Typ: IDirect3DBaseTexture9*

Zeiger auf eine IDirect3DBaseTexture9-Schnittstelle , die die Zieltextur darstellt. Die Zieltextur muss sich im D3DPOOL_DEFAULT Arbeitsspeicherpools befinden.

Rückgabewert

Typ: HRESULT

Wenn die Methode erfolgreich ist, wird der Rückgabewert D3D_OK. Wenn die Methode fehlschlägt, kann der Rückgabewert D3DERR_INVALIDCALL werden.

Hinweise

Sie können einen Teil einer Textur modifiziert, indem Sie sie sperren oder eine der folgenden Methoden aufrufen.

IDirect3DDevice9::UpdateTexture ruft die modifiziert Teile der Textur ab, indem berechnet wird, was seit dem letzten Aktualisierungsvorgang akkumuliert wurde.

Aus Leistungsgründen werden modifiziert Regionen nur für ebene null einer Textur aufgezeichnet. Bei Unterebenen wird davon ausgegangen, dass das entsprechende (skalierte) Rechteck oder Feld ebenfalls modifiziert ist. Fehlerhafte Regionen werden automatisch aufgezeichnet, wenn LockRect oder IDirect3DVolumeTexture9::LockBox ohne D3DLOCK_NO_DIRTY_UPDATE oder D3DLOCK_READONLY aufgerufen wird. Außerdem ist die Zieloberfläche von IDirect3DDevice9::UpdateSurface modifiziert markiert.

Bei dieser Methode tritt ein Fehler auf, wenn die Texturen unterschiedlicher Typen sind, wenn ihre Puffer auf der unteren Ebene unterschiedlich groß sind oder wenn die übereinstimmenden Ebenen nicht übereinstimmen. Betrachten Sie beispielsweise eine Quelltextur mit sechs Ebenen mit den folgenden Dimensionen.


32x16, 16x8, 8x4, 4x2, 2x1, 1x1

Diese Quelltextur mit sechs Ebenen kann die Quelle für das folgende Ziel auf einer Ebene sein.


1x1

Für das folgende Ziel mit zwei Ebenen.


2x1, 1x1

Oder für das folgende Ziel mit drei Ebenen.


4x2, 2x1, 1x1

Darüber hinaus schlägt diese Methode fehl, wenn die Texturen unterschiedliche Formate aufweisen. Wenn die Zieltextur weniger Ebenen als die Quelle aufweist, werden nur die übereinstimmenden Ebenen kopiert. Wenn die Quelltextur weniger Ebenen als das Ziel aufweist, schlägt die Methode fehl.

Wenn die Quelltextur über modifiziert Regionen verfügt, kann die Kopie optimiert werden, indem Sie die Kopie auf diese Regionen beschränken. Es ist nicht garantiert, dass nur die modifiziert markierten Bytes kopiert werden.

Hier sind die Möglichkeiten für die Kombination von Quell- und Zieloberflächen:

  • Wenn pSourceTexture eine nicht automatisch generierte mipmap und pDestinationTexture eine automatisch generierte Mipmap ist, wird nur die oberste übereinstimmende Ebene aktualisiert, und die Zielunterebenen werden neu generiert. Alle anderen Quellunterebenen werden ignoriert.
  • Wenn sowohl pSourceTexture als auch pDestinationTexture automatisch generierte Mipmaps sind, wird nur die oberste Übereinstimmende Ebene aktualisiert. Die Unterebenen aus der Quelle werden ignoriert, und die Zielunterebenen werden neu generiert.
  • Wenn pSourceTexture eine automatisch generierte mipmap und pDestinationTexture eine nicht automatisch generierte Mipmap ist, schlägt UpdateTexture fehl.

Anforderungen

   
Zielplattform Windows
Kopfzeile d3d9.h (einschließlich D3D9.h)
Bibliothek D3D9.lib

Weitere Informationen

IDirect3D9::CreateDevice

IDirect3DDevice9