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
傳回值
類型: 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 |