Direct3D 11.2 功能

下列是在 Direct3D 11.2 中新增的功能,包括在 Windows 8.1、Windows RT 8.1 和 Windows Server 2012 R2 中。

磚資源

Direct3D 11.2 可讓您建立可視為大型邏輯資源(使用少量實體記憶體)的磚資源。 並排顯示的資源很有用 (例如) 與遊戲中的地形和應用程式 UI。

藉由指定 D3D11 資源的「 _ _ 其他 _ 並排顯示」旗標來建立並排的資源。 若要使用已磚的資源,請使用下列 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;
}

對變形裝置的擴充支援

Direct3D 11.2 延伸了對 變形裝置的支援,您可以在 D3D11CreateDeviceDriverType 參數中傳遞 D3D _ 驅動程式 _ 類型 _ 變形來建立這些裝置。 Direct3D 11.2 中的變形軟體轉譯器加入了對 Direct3D 功能等級 11 1 的完整支援,包括並排顯示的 _ 資源IDXGIDevice3:: Trim、共用 BCn 表面、minblend 和地圖預設。 HLSL 著色器中的雙重支援也已啟用,並支援 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 邊緣定義值如何從一個節點傳遞至另一個節點。 傳遞值的資料類型必須相同;沒有隱含類型轉換。 Shape 和 swizzling 規則會遵循 HLSL 行為,而且值只能在這個順序中向前傳遞。 如需 FLG API 的詳細資訊,請參閱 ID3D11FunctionLinkingGraph

收件匣 HLSL 編譯器

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

Direct3D 11 的新功能