Partager via


Méthode IDirect3DDevice9 ::UpdateTexture (d3d9helper.h)

Mises à jour les parties sale d’une texture.

Syntaxe

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

Paramètres

[in] pSourceTexture

Type : IDirect3DBaseTexture9*

Pointeur vers une interface IDirect3DBaseTexture9 , représentant la texture source. La texture source doit être dans la mémoire système (D3DPOOL_SYSTEMMEM).

[in] pDestinationTexture

Type : IDirect3DBaseTexture9*

Pointeur vers une interface IDirect3DBaseTexture9 , représentant la texture de destination. La texture de destination doit se trouver dans le pool de mémoire D3DPOOL_DEFAULT.

Valeur retournée

Type : HRESULT

Si la méthode réussit, la valeur de retour est D3D_OK. Si la méthode échoue, la valeur de retour peut être D3DERR_INVALIDCALL.

Remarques

Vous pouvez sale une partie d’une texture en la verrouillant ou en appelant l’une des méthodes suivantes.

IDirect3DDevice9 ::UpdateTexture récupère les parties sale de la texture en calculant ce qui a été accumulé depuis la dernière opération de mise à jour.

Pour des raisons de performances, sale régions sont enregistrées uniquement pour le niveau zéro d’une texture. Pour les sous-niveaux, il est supposé que le rectangle ou la zone correspondant (mis à l’échelle) est également sale. Les régions sales sont automatiquement enregistrées lorsque LockRect ou IDirect3DVolumeTexture9 ::LockBox est appelé sans D3DLOCK_NO_DIRTY_UPDATE ni D3DLOCK_READONLY. En outre, la surface de destination de IDirect3DDevice9 ::UpdateSurface est marquée sale.

Cette méthode échoue si les textures sont de types différents, si leurs mémoires tampons de niveau inférieur sont de tailles différentes ou si leurs niveaux correspondants ne correspondent pas. Par exemple, considérez une texture source à six niveaux avec les dimensions suivantes.


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

Cette texture source à six niveaux peut être la source de la destination à un niveau suivante.


1x1

Pour la destination à deux niveaux suivante.


2x1, 1x1

Ou, pour la destination à trois niveaux suivante.


4x2, 2x1, 1x1

En outre, cette méthode échoue si les textures sont de formats différents. Si la texture de destination a moins de niveaux que la source, seuls les niveaux correspondants sont copiés. Si la texture source a moins de niveaux que la destination, la méthode échoue.

Si la texture source a sale régions, la copie peut être optimisée en limitant la copie à ces régions uniquement. Il n’est pas garanti que seuls les octets marqués sale seront copiés.

Voici les possibilités de combinaisons de surfaces source et de destination :

  • Si pSourceTexture est un mipmap non généré automatiquement et pDestinationTexture est un mipmap généré automatiquement, seul le niveau correspondant le plus élevé est mis à jour et les sous-niveaux de destination sont régénérés. Tous les autres sous-niveaux sources sont ignorés.
  • Si pSourceTexture et pDestinationTexture sont des mipmaps générés automatiquement, seul le niveau correspondant le plus élevé est mis à jour. Les sous-niveaux de la source sont ignorés et les sous-niveaux de destination sont régénérés.
  • Si pSourceTexture est un mipmap généré automatiquement et pDestinationTexture un mipmap non généré automatiquement, UpdateTexture échoue.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête d3d9helper.h (inclure D3D9.h)
Bibliothèque D3D9.lib

Voir aussi

IDirect3D9 ::CreateDevice

IDirect3DDevice9