例外
部分 Direct3D 11 功能並未完全由功能層級指定。 本主題描述在舊版硬體上使用 Direct3D 11 時的例外狀況。 或許在定義功能層級之後新增了一項功能(且需要更新的驅動程式),或可能是不同的 GPU 會實作廣泛不同的實作。 功能層級上的例外狀況可以歸類為以下幾個群組:
10Level9 參考 一節列出各種 ID3D11Device 和 ID3D11DeviceContext 方法在不同 10Level9 功能等級上的行為差異。
擴充格式
擴充格式是針對功能層級 10_0 和 10_1 新增至 Direct3D 10.1 和 Direct3D 11 的像素格式。 擴充格式需要更新的驅動程式(適用於 Direct3D 10_1 或以下版本)。 使用 ID3D11Device::CheckFormatSupport 和 ID3D11Device::CheckFeatureSupport 來查詢這些擴充格式的支援。
擴充格式:
- 新增對每個元件 8 位資源的 BGRA 順序支援。
- 允許轉換整數值交換鏈結緩衝區。 這可讓應用程式新增或移除_SRGB後綴,或轉譯至XR_BIAS交換鏈結。
- 增加對 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM 的可選支援。
- 保證DXGI_FORMAT_R16G16B16A16_FLOAT交換鏈結的呈現方式,就像包含的數據不是 sRGB 編碼一樣。
除XR_BIAS格式外,其餘的擴充格式要麼完全支援,要麼不支援。 XR_BIAS格式為:
- 在任何 9 層級中不受支援
- 10_0 或 10_1 層級皆為可選擇
- 保證在 11.0 級別
多重取樣抗鋸齒
MSAA 的實現在不同 GPU 實作之間差異頗大。 功能層級 10.1 新增了一些定義完善的最小值,但在較低的功能層級,MSAA 必須使用 ID3D11Device::CheckMultisampleQualityLevels明確測試。
Texture2D 大小
功能層級保證可以建立大小下限,不過,應用程式可以建立較大的紋理,最多可達到 GPU 支援的完整大小。 如果超過最大值,應用程式應預期函式 ID3D11Device::CreateTexture2D 可能會失敗。
功能層級 9 的配接器特殊行為
三個最低功能層級D3D_FEATURE_LEVEL_9_1,D3D_FEATURE_LEVEL_9_2和D3D_FEATURE_LEVEL_9_3共用一般實作 DLL,並將 IDXGIAdapter 自變數視為 D3D11CreateDevice[AndSwapchain] 作為範本適配卡,並在裝置建立時建立自己的適配卡。 這表示傳遞至建立例程中的 IDXGIAdapter 不會與透過 IDXGIDevice::GetAdapter 從裝置擷取的配接器相同。 其影響在於,由傳入配接器列舉出的 IDXGIOutputs 無法用於任何層級9裝置進入全螢幕,因為這些輸出不屬於該裝置的配接器。 最好捨棄傳入的範本配接器,並使用IDXGIDevice::GetAdapter擷取裝置的已建立配接器,其中 IDXGIDevice 可以使用 Direct3D 裝置介面的 QueryInterface 來擷取。
相關主題