IDirect3DTexture9::LockRect 方法 (d3d9helper.h)

鎖定紋理資源上的矩形。

語法

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

參數

[in] Level

類型: UINT

指定要鎖定的紋理資源層級。

[out] pLockedRect

類型: D3DLOCKED_RECT*

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

[in] pRect

類型: const RECT*

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

[in] Flags

類型: DWORD

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

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

傳回值

類型: HRESULT

如果方法成功,傳回值會D3D_OK。 如果方法失敗,則可以D3DERR_INVALIDCALL傳回值。

備註

使用 D3DPOOL_DEFAULT 建立的紋理無法鎖定。 使用 USAGE_DYNAMIC 建立時,會在視訊記憶體中建立的紋理可鎖定。

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

深度樣板紋理的唯一可鎖定格式是 D3DLOCK_D16_LOCKABLE

無法鎖定視訊記憶體紋理,但必須藉由呼叫 IDirect3DDevice9::UpdateSurfaceIDirect3DDevice9::UpdateTexture 來修改。 Direct3D 9 無法辨識的某些專屬驅動程式圖元格式有例外。 這些可以鎖定。

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

規格需求

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

另請參閱

IDirect3DDevice9::GetRenderTargetData

IDirect3DDevice9::UpdateTexture

IDirect3DTexture9

IDirect3DTexture9::UnlockRect