Direct3D 10.1 功能

Direct3D 10.1 使用下列新功能擴充 Direct3D 10.0 的功能集:

  • 混合模式 - 每個轉譯目標使用新的混合狀態介面的獨立混合模式(請參閱 ID3D10BlendState1 介面 )。 雙重來源混合作業僅限於轉譯目標位置 0;您不可以寫入其他輸出,或有任何轉譯目標系結至位置 0 以外的位置。

  • 擷取行為 - 自動撲殺零區域臉部;這只會影響線框轉譯。

  • 浮點規則 - 針對浮點使用相同的 IEEE-754 規則,但已收緊 32 位浮點運算,以在無限精確結果的 0.5 單位最後位置 (0.5 ULP) 內產生結果。 這適用于加法、減法和乘法。 (精確度為 0.5 ULP 以乘法,1.0 ULP 為對等值)。

  • 格式 - float16 混合的精確度已增加到 0.5 ULP。 UNORM16/SNORM16/SNORM8 格式也需要混合。

  • Multisample Anti-Aliasing - 多重取樣已增強,以將涵蓋範圍型透明度一般化,並讓多重取樣在多階段轉譯中更有效率地運作。 為了達成此目的,所有多重取樣語意都會定義為圖元著色器一律在每個樣本執行一次(sample-frequency),並計算每個樣本的個別色彩。 如果圖元著色器未使用任何個別取樣屬性,則會針對圖元中的每個涵蓋樣本計算相同的值。 在此情況下,它相當於每圖元執行著色器一次的硬體(圖元頻率),將結果複寫到所有涵蓋的樣本。 自然地,以圖元頻率執行一律會產生與以取樣頻率執行相同著色器相同的結果,當屬性以圖元頻率取樣時。 除非著色器是以圖元頻率執行,否則 PSInvocations 管線統計資料會以取樣頻率遞增。

  • 管線階段頻寬 - 增加可在著色器階段之間傳遞的資料量:

    資源 限制
    著色器階段之間的暫存器 32 (32 位 x 4 元件)
    頂點著色器輸入暫存器 32
    輸入組合器輸入位置 32

     

  • 點陣化規則 - 點陣化規則已針對線條變更,此外,新增了新功能。

    • MultisampleEnable 只會影響線條點陣化(點和三角形不受影響),並且用來選擇線條繪製演算法。 這表示不再支援來自 Direct3D 10 的一些多重取樣點陣化。
    • 使用基本點陣化執行新的取樣頻率圖元著色器。
  • 資源 - 在兩個新的案例中啟用 CopyResource:

    • 色彩和深度/樣板 MSAA 表面現在都可以與 CopyResource 搭配使用,做為來源或目的地
    • 在特定 32/64/128 位預先結構化、具類型的資源和相同位寬度的壓縮標記法之間複製格式轉換。
  • 紋理取樣 - 已定義sample_c和sample_c_lz指令,以使用 Texture2DArrays 和 TextureCubeArrays,使用 Location 成員 (Alpha 元件) 來指定陣列索引。

  • 檢視 - TextureCube 和新的 TextureCubeArray (請參閱 D3D10_TEXCUBE_ARRAY_SRV1 ) 不是實際資源,而是 Texture2DArray 資源的新檢視。 使用新的使用旗標從 Texture2DArray 資源建立資源檢視 (D3D10_RESOURCE_MISC_TEXTURECUBE),使用新的 ID3D10ShaderResourceView1 介面 介面,將 Cube 紋理檢視系結至管線。

新功能需要 10.1 裝置類型(請參閱 ID3D10Device1 介面 ),其可藉由呼叫 D3D10CreateDevice1 來建立,或者您可以呼叫 D3D10CreateDeviceAndSwapChain1 同時建立裝置和交換鏈結。

在 Windows Vista Service Pack 1 中,Direct3D 10.0 和 Direct3D 10.1 DLL 會並存于系統上。 若要存取 10.1 功能,請執行下列任一動作:

存取 Vista Gold 和 Vista Service Pack 1 上的 10.1 功能

想要支援 Vista Gold 和 SP1 的開發人員必須考慮 Vista Gold 上缺少新的 10.1 API 延伸模組。 DXUT 和 D3DX10 都會根據系統上可用的 DLL 和可用的硬體 (10.0 或 10.1) 來提供便利功能來建立適當的裝置。 10.1 裝置繼承自 10.0 裝置,而且可以使用 QueryInterface() 來擷取。 建議每個應用程式追蹤裝置類型,並維護 10.1 裝置的指標(如果有的話),以避免需要 10.1 功能時經常呼叫 QueryInterface。 同樣地,當 10.1 資源檢視和狀態物件是由應用程式的自訂類別相關聯時,建議應用程式追蹤物件是 10.0 或 10.1 類型,以避免重複的 QueryInterface() 呼叫。 D3DX10 包含一組公用程式函式來簡化此程式(請參閱 D3DX10CreateDevice D3DX10CreateDeviceAndSwapChain )。

僅存取 Vista Service Pack 1 上的 10.1 功能

有些開發人員可能會選擇要求 Vista Service Pack 1,這會廣泛散發給終端使用者,並包含 Direct3D 10.1 以外的一系列改進功能。 這些開發人員可以單獨使用 Direct3D 10.1 標頭和程式庫,依賴支援 10.0 和 10.1 硬體的 Direct3D 10.1 DLL(不過,在不支援新功能的 10.0 裝置上,某些呼叫可能會失敗)。

一些其他注意事項:

  • D3DX10.dll 中公開的 API 會同時接受 10.0 和 10.1 裝置,並在可用時利用 10.1 功能。
  • D3D10SDKLayers.dll 支援 10.1 裝置,並可輸出 10.1 功能的適當偵錯 Spew。
  • D3D10Ref.dll 會實作 10.0 和 10.1 軟體裝置。
  • D3DX10 和 FXC 支援以下列目標更新的 10.1 著色器模型:vs_4_1、gs_4_1、ps_4_1及可系結至 10.1 裝置的fx_4_1。 10.1 裝置支援著色器模型 4.0 和 4.1 著色器。
  • Direct3D 10.0 效果架構支援 10.0 和 10.1 裝置,不過,包含著色器模型 4.1 著色器或新 10.1 功能的任何技術都必須使用 10.1 裝置。

Direct3D 10 的程式設計指南