共用方式為


Direct3D 11.2 功能

Direct3D 11.2 已新增下列功能,隨附於 Windows 8.1、Windows RT 8.1 和 Windows Server 2012 R2 中。

並排顯示的資源

Direct3D 11.2 可讓您建立磚化資源,其可視為使用少量物理記憶體的大型邏輯資源。 磚資源在遊戲和應用程式UI中具有地形很有用(例如)。

藉由指定 D3D11_RESOURCE_MISC_TILED 旗標來建立並排顯示的資源。 若要使用並排顯示的資源,請使用下列 API:

如需磚資源的詳細資訊,請參閱 磚資源

檢查磚資源支援

使用磚資源之前,您必須瞭解裝置是否支援並排顯示的資源。 以下是您檢查磚資源支援的方式:

HRESULT hr = D3D11CreateDevice(
    nullptr,                    // Specify nullptr to use the default adapter.
    D3D_DRIVER_TYPE_HARDWARE,   // Create a device using the hardware graphics driver.
    0,                          // Should be 0 unless the driver is D3D_DRIVER_TYPE_SOFTWARE.
    creationFlags,              // Set debug and Direct2D compatibility flags.
    featureLevels,              // List of feature levels this app can support.
    ARRAYSIZE(featureLevels),   // Size of the list above.
    D3D11_SDK_VERSION,          // Always set this to D3D11_SDK_VERSION for Windows Store apps.
    &device,                    // Returns the Direct3D device created.
    &m_d3dFeatureLevel,         // Returns feature level of device created.
    &context                    // Returns the device immediate context.
    );

if (SUCCEEDED(hr))
{
    D3D11_FEATURE_DATA_D3D11_OPTIONS1 featureData;
    DX::ThrowIfFailed(
        device->CheckFeatureSupport(D3D11_FEATURE_D3D11_OPTIONS1, &featureData, sizeof(featureData))
        );

    m_tiledResourcesTier = featureData.TiledResourcesTier;
}

WARP 裝置的延伸支援

Direct3D 11.2 延伸對 WARP 裝置的支援,您可以在 D3D11CreateDeviceDriverType 參數中傳遞 D3D_DRIVER_TYPE_WARP。 Direct3D 11.2 中的 WARP 軟體轉譯器新增 Direct3D 功能層級的完整支援, 11_1,包括 磚資源IDXGIDevice3::Trim、共用 BCn 表面、minblend 和 map 預設值。 HLSL 著色器中的 Double 支援也已啟用,並支援 16x MSAA。

標註圖形命令

Direct3D 11.2 可讓您使用這些 API 標註圖形命令:

HLSL 著色器連結

Windows 8.1 新增了 HLSL 著色器的個別編譯和連結,讓圖形設計人員能夠建立先行編譯的 HLSL 函式、將它們封裝成連結庫,並在運行時間將它們連結至完整的著色器。 這基本上相當於 C/C++個別的編譯、連結庫和連結,而且它可讓程式設計人員撰寫預先編譯的 HLSL 程式代碼,當更多資訊可供完成計算時。 如需如何使用著色器連結的詳細資訊,請參閱使用著色器連結

完成這些步驟,以在運行時間使用動態連結建立最終著色器。

建立和使用著色器連結

  1. 建立 ID3D11Linker 連結器物件,代表鏈接內容。 單一內容無法用來產生多個著色器;鏈接內容是用來產生單一著色器,然後會擲回連結內容。
  2. 使用 D3DLoadModule,從其連結庫 Blob 載入和設定連結庫。
  3. 使用 D3DLoadModule 載入和設定專案著色器 Blob,或建立 FLG 著色器
  4. 使用 ID3D11Module::CreateInstance 建立 ID3D11ModuleInstance 物件,然後呼叫這些物件的函式,將資源重新系結至其最終位置。
  5. 將連結庫新增至連結器,然後呼叫 ID3D11Linker::Link,以產生最終的著色器位元組程式代碼,然後載入並用於運行時間,就像完全先行編譯和連結著色器一樣。

函式連結圖 (FLG)

Windows 8.1 也會新增函式連結圖形 (FLG)。 您可以使用 FLG 來建構著色器,其中包含一連串的先行編譯函式調用,這些調用會將值傳遞至彼此。 使用 FLG 時,不需要寫入 HLSL 並叫用 HLSL 編譯程式。 而是使用 C++ API 呼叫,以程式設計方式指定著色器結構。 FLG 節點代表先行編譯連結庫函式的輸入和輸出簽章和調用。 註冊函式呼叫節點的順序會定義調用序列。 必須先指定輸入簽章節點,而輸出簽章節點必須最後指定。 FLG 邊緣會定義值如何從某個節點傳遞至另一個節點。 傳遞值的數據類型必須相同;沒有隱含類型轉換。 圖形和令人眼花繚亂的規則遵循 HLSL 行為,而且值只能在此序列中向前傳遞。 如需 FLG API 的詳細資訊,請參閱 ID3D11FunctionLinkingGraph

收件匣 HLSL 編譯程式

HLSL 編譯程式現在是 Windows 8.1 和更新版本的收件匣。 現在,著色器程序設計的大部分 API 都可以用於針對 Windows 8.1 和更新版本建置的 Windows 市集應用程式中。 許多用於著色器程序設計的 API 無法在針對 Windows 8 建置的 Windows 市集應用程式中使用;這些 API 的參考頁面已標示為附註。 但某些著色器 API(例如,D3DCompileFromFile)仍只能用來開發 Windows 市集應用程式,而不是在您提交至 Windows 市集的應用程式中;這些 API 的參考頁面仍會以附註標示。

Direct3D 11 的新功能