鎖定資源 (Direct3D 9)
鎖定資源表示授與其儲存空間的CPU存取權。 針對資源定義下列鎖定選項:
- D3DLOCK_DISCARD
- D3DLOCK_READONLY
- D3DLOCK_NOOVERWRITE
- D3DLOCK_NOSYSLOCK
- D3DLOCK_NO_DIRTY_UPDATE
如需鎖定旗標及其與特定資源關聯的詳細資訊,請參閱個別資源鎖定方法上的參考頁面。 應用程式開發人員應該注意,D3DLOCK_DISCARD、D3DLOCK_READONLY和D3DLOCK_NOOVERWRITE旗標只是提示。 運行時間不會檢查應用程式是否遵循這些旗標所指定的功能。 指定D3DLOCK_READONLY但寫入資源的應用程式應該預期未定義的結果。 一般而言,針對鎖定旗標運作,包括鎖定使用旗標,不保證可在更新版本中運作,而且可能會大幅降低效能。
鎖定操作後會執行解除鎖定操作。 例如,在鎖定紋理之後,應用程式會藉由解除鎖定紋理來放棄直接存取鎖定的紋理。 除了授與處理器存取權之外,涉及該資源的任何其他作業也會在鎖定期間串行化。 即使針對非重疊區域,也只允許資源的單一鎖定,而且在該表面的鎖定作業未完成時,任何加速器操作都不能進行。
每個資源介面都有用來鎖定自主緩衝區的方法。 每個紋理資源也可以鎖定該資源的子部分。 2D 資源(表面)允許鎖定子矩形,而立體資源允許鎖定子立體或方塊。 每個鎖定方法都會傳回結構,其中包含備份資源之記憶體的指標,以及代表數據列或平面之間距離的值,視資源類型而定。 如需詳細資訊,請參閱資源介面的方法清單。 傳回的指標一律指向鎖定子區域中的左上方位元組。
使用索引和頂點緩衝區時,您可以進行多個鎖定呼叫;不過,您必須確定鎖定呼叫數目符合解除鎖定呼叫的數目。
DXTn 會將像素儲存在編碼的 4x4 區塊中,並且只能鎖定在 4x4 邊界上。
相關主題