Share via


IDirect3DSurface9::LockRect 方法 (d3d9helper.h)

鎖定表面上的矩形。

語法

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

參數

[out] pLockedRect

類型: D3DLOCKED_RECT*

描述鎖定區域 之D3DLOCKED_RECT 結構的指標。

[in] pRect

類型: const RECT*

要鎖定之矩形的指標。 由 RECT 結構的指標所指定。 為此參數指定 NULL 會展開已變更的區域,以涵蓋整個表面。

[in] Flags

類型: DWORD

零個或多個鎖定旗標的組合,描述要執行的鎖定類型。 針對這個方法,有效的旗標為:

  • D3DLOCK_DISCARD
  • D3DLOCK_DONOTWAIT
  • D3DLOCK_NO_DIRTY_UPDATE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_READONLY
使用 D3DLOCK_DISCARD 時,您可能不會指定子專案。 如需旗標的描述,請參閱 D3DLOCK

傳回值

類型: HRESULT

如果方法成功,傳回值會D3D_OK。

如果方法失敗,則傳回值可以D3DERR_INVALIDCALL或D3DERR_WASSTILLDRAWING。

備註

如果已指定 D3DLOCK_DONOTWAIT 旗標,且驅動程式無法立即鎖定表面, IDirect3DSurface9::LockRect 會傳回D3DERR_WASSTILLDRAWING,讓應用程式可以在等候驅動程式鎖定介面時使用 CPU 週期。

深度樣板表面的唯一可鎖定格式是D3DFMT_D16_LOCKABLE。 請參閱 D3DFORMAT

基於效能考慮,只會記錄紋理層級零的已變更區域。 在呼叫 IDirect3DSurface9::LockRect 時,系統會自動記錄未D3DLOCK_NO_DIRTY_UPDATE或D3DLOCK_READONLY。 如需詳細資訊 ,請參閱 IDirect3DDevice9::UpdateTexture

無法鎖定多重取樣後台緩衝區。

這個方法無法從使用 D3DUSAGE_RENDERTARGET 建立的紋理資源所包含的表面擷取數據,因為這類紋理必須指派給D3DPOOL_DEFAULT記憶體,因此無法鎖定。 在此情況下,請改用 IDirect3DDevice9::GetRenderTargetData ,將紋理數據從裝置記憶體複製到系統記憶體。

規格需求

   
目標平台 Windows
標頭 d3d9helper.h (包含 D3D9.h)
程式庫 D3D9.lib

另請參閱

IDirect3DSurface9

IDirect3DSurface9::UnlockRect