(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 界限上鎖定。

Direct3D 資源