IDirect3DVertexBuffer9::Lock

電子書《精通DirectX.3D圖形與動畫程序設計.王德才.pdf》p54

對頂點緩衝區的內存操作,必須通過Lock和Unlock來實現

以下介紹Lock函數

HRESULT Lock(
  [in]   UINT OffsetToLock,
  [in]   UINT SizeToLock,
  [out]  VOID **ppbData,
  [in]   DWORD Flags
);
OffToLock 指定加鎖內存起始地址
SizeToLock指定加鎖內存大小
ppbData 用於返回內存指針地址
Flags 表示頂點緩衝區的加鎖屬性,可以取0(默認值),或以下值得邏輯或:
D3DLOCK_DISCARD 更新整個緩衝區
D3DLOCK_NO_DIRTY_UPDATE 在默認狀態下,對緩衝區加鎖會對該區域設置一個Dirty標記。該屬性不對該區域設置Dirty標記,當對緩衝區由特殊需要時使用
D3DLOCK_NOSYSLOCK 保證不覆蓋緩衝區數據,設置改屬性可以立即返回內存指針,提高系統性能
D3DLOCK_READONLY 在加鎖過程中系統可以進行其他操作
D3DLOCK_NOOVERWRITE 設置緩衝區爲只讀屬性

備註:
執行Lock()需要一定的時間,默認狀態下,Direct3D會暫停其他的顯示操作,知道Lock()執行結束。設置D3DLOCK_NOSYSLOCK屬性,可以使Direct3D在執行對緩衝區加鎖的同時執行其他操作,比如移動鼠標等
發佈了231 篇原創文章 · 獲贊 5 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章