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
傳回值
類型: HRESULT
如果方法成功,傳回值會D3D_OK。 如果方法失敗,則可以D3DERR_INVALIDCALL傳回值。
備註
使用 D3DPOOL_DEFAULT 建立的紋理無法鎖定。 使用 USAGE_DYNAMIC 建立時,會在視訊記憶體中建立的紋理可鎖定。
基於效能考慮,已變更的區域只會針對紋理的層級零進行記錄。 呼叫 IDirect3DTexture9::LockRect 時,系統會自動記錄未 D3DLOCK_NO_DIRTY_UPDATE 或D3DLOCK_READONLY。 如需詳細資訊 ,請參閱 IDirect3DDevice9::UpdateTexture 。
深度樣板紋理的唯一可鎖定格式是 D3DLOCK_D16_LOCKABLE。
無法鎖定視訊記憶體紋理,但必須藉由呼叫 IDirect3DDevice9::UpdateSurface 或 IDirect3DDevice9::UpdateTexture 來修改。 Direct3D 9 無法辨識的某些專屬驅動程式圖元格式有例外。 這些可以鎖定。
此方法無法從以 D3DUSAGE_RENDERTARGET 建立的紋理資源擷取數據,因為這類紋理必須指派給D3DPOOL_DEFAULT記憶體,因此無法鎖定。 在此情況下,請改用 IDirect3DDevice9::GetRenderTargetData ,將紋理數據從裝置記憶體複製到系統記憶體。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | d3d9helper.h (包含 D3D9.h) |
程式庫 | D3D9.lib |
另請參閱
IDirect3DDevice9::GetRenderTargetData