Partager via


Méthode IDirect3DSurface9 ::LockRect (d3d9helper.h)

Verrouille un rectangle sur une surface.

Syntaxe

HRESULT LockRect(
  [out] D3DLOCKED_RECT *pLockedRect,
  [in]  const RECT     *pRect,
  [in]  DWORD          Flags
);

Paramètres

[out] pLockedRect

Type : D3DLOCKED_RECT*

Pointeur vers une structure D3DLOCKED_RECT qui décrit la région verrouillée.

[in] pRect

Type : const RECT*

Pointeur vers un rectangle à verrouiller. Spécifié par un pointeur vers une structure RECT . La spécification null pour ce paramètre étend la région sale pour couvrir l’ensemble de la surface.

[in] Flags

Type : DWORD

Combinaison de zéro ou plusieurs indicateurs de verrouillage qui décrivent le type de verrou à effectuer. Pour cette méthode, les indicateurs valides sont les suivants :

  • D3DLOCK_DISCARD
  • D3DLOCK_DONOTWAIT
  • D3DLOCK_NO_DIRTY_UPDATE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_READONLY
Vous ne pouvez pas spécifier de sous-correction lors de l’utilisation de D3DLOCK_DISCARD. Pour obtenir une description des indicateurs, consultez D3DLOCK.

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 ou D3DERR_WASSTILLDRAWING.

Remarques

Si l’indicateur D3DLOCK_DONOTWAIT est spécifié et que le pilote ne peut pas verrouiller la surface immédiatement, IDirect3DSurface9 ::LockRect retourne D3DERR_WASSTILLDRAWING afin qu’une application puisse utiliser les cycles du processeur en attendant que le pilote verrouille la surface.

Le seul format verrouillable pour une surface de gabarit de profondeur est D3DFMT_D16_LOCKABLE. Voir D3DFORMAT.

Pour des raisons de performances, sale régions sont enregistrées uniquement pour le niveau zéro d’une texture. Les régions sales sont automatiquement enregistrées lorsque IDirect3DSurface9 ::LockRect est appelé sans D3DLOCK_NO_DIRTY_UPDATE ni D3DLOCK_READONLY. Pour plus d’informations, consultez IDirect3DDevice9 ::UpdateTexture .

Impossible de verrouiller une mémoire tampon arrière multiéchantillon.

Cette méthode ne peut pas récupérer les données d’une surface contenue dans une ressource de texture créée avec D3DUSAGE_RENDERTARGET , car une telle texture doit être affectée à D3DPOOL_DEFAULT mémoire et n’est donc pas verrouillable. Dans ce cas, utilisez plutôt IDirect3DDevice9 ::GetRenderTargetData pour copier les données de texture de la mémoire de l’appareil vers la mémoire système.

Configuration requise

   
Plateforme cible Windows
En-tête d3d9helper.h (incluez D3D9.h)
Bibliothèque D3D9.lib

Voir aussi

IDirect3DSurface9

IDirect3DSurface9 ::UnlockRect