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 也會新增 Graph (FLG) 的函式連結。 您可以使用 FLG 來建立著色器,其中包含一連串預先編譯的函式調用,可將值傳遞給彼此。 使用 FLG 時,不需要撰寫 HLSL 並叫用 HLSL 編譯器。 相反地,會使用 c + + API 呼叫以程式設計方式指定著色器結構。 FLG 節點代表輸入和輸出的簽章,以及先行編譯程式庫函數的調用。 註冊函式呼叫節點的順序會定義調用的順序。 必須先指定輸入簽章節點,而且必須最後指定輸出簽章節點。 FLG 邊緣定義值如何從一個節點傳遞至另一個節點。 傳遞值的資料類型必須相同;沒有隱含類型轉換。 Shape 和 swizzling 規則會遵循 HLSL 行為,而且值只能在這個順序中向前傳遞。 如需 FLG API 的詳細資訊,請參閱 ID3D11FunctionLinkingGraph

收件匣 HLSL 編譯器

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

Direct3D 11 的新功能