複製Depth-Stencil值

Microsoft Direct3D 執行時間會呼叫使用者模式顯示驅動程式的 Blt 函式,將深度樣板值從視訊記憶體複製到系統記憶體,反之亦然。 驅動程式和硬體必須執行所有驅動程式支援的不透明樣板 (格式轉換,也就是 D3DDDIFORMAT 列舉類型所定義的所有格式,但下列任何格式除外D3DDDIFMT_D*_LOCKABLE) 或從下列任何格式轉換:

  • D3DDDIFMT_D16_LOCKABLE

  • D3DDDIFMT_D32_LOCKABLE

  • D3DDDIFMT_D32F_LOCKABLE

  • D3DDDIFMT_S8_LOCKABLE

驅動程式會捨棄任何通道 (深度或樣板) 以來源格式呈現,但不存在於目的地格式中。 執行時間不允許在未共用任何通用通道類型的深度樣板介面之間進行複製。

驅動程式會先將來源深度值轉換為 32 位不帶正負號的整數值,然後從 32 位不帶正負號的整數值轉換為目的地標記法。 下列規則適用于這兩種轉換:

  • 如果來源深度值為浮點值,則會套用對 [0,1] 的限制,結果會乘以_MAX_UINT。

  • 如果來源是整數,而且目的地是較低精確度的整數,則會移除最右邊的額外位。

  • 如果來源是整數,而且目的地是較高精確度的整數,則最右邊的額外位會從最左邊的最大有效位複寫。

  • 如果來源是整數,而目的地是浮點值,則 32 位整數會轉換成浮點值,而結果會除以_MAX_UINT。

驅動程式不需要提供非一般分散式深度值的特殊處理。

驅動程式會將來源樣板值展開至 8 位整數 (,也就是驅動程式會將來源樣板值填補為左側) 的零。 如果目的地標記法使用較低的精確度,則驅動程式應該捨棄最重要的位來執行轉換。

使用者模式顯示驅動程式必須支援任意子目錄的深度樣板複本。 不過,在深度樣板複製期間,不需要驅動程式來執行鏡像、延展或色彩索引鍵作業。 深度樣板複製期間需要點取樣。