軟體層

Direct3D 11 運行時間是以圖層建構,從核心的基本功能開始,並在外部層建置選擇性和開發人員輔助功能。 本節說明每一層的功能。

一般規則是層會新增功能,但不會修改現有的行為。 例如,核心函式會有與具現化偵錯層無關的相同傳回值,不過如果偵錯層具現化,可能會提供額外的偵錯輸出。

若要在建立裝置時建立圖層,請呼叫 D3D11CreateDevice 或 D3D11CreateDeviceAndSwapChain,並提供一或多個D3D11_CREATE_DEVICE_FLAG值。

Direct3D 11 提供下列運行時間層:

核心層

核心層預設存在;在 API 與設備驅動器之間提供非常精簡的對應,將高頻率呼叫的額外負荷降至最低。 由於核心層對於效能至關重要,因此只會執行重要的驗證。 其餘圖層是選擇性的。

偵錯層

偵錯層提供廣泛的額外參數和一致性驗證(例如驗證著色器連結和資源系結、驗證參數一致性,以及報告錯誤描述)。

若要建立支援偵錯層的裝置,您必須安裝 DirectX SDK(若要取得 D3D11SDKLayers.dll),然後在呼叫 D3D11CreateDevice 函式或 D3D11CreateDeviceAndSwapChain 函式時指定D3D11_CREATE_DEVICE_DEBUG旗標。 如果您執行已啟用偵錯層的應用程式,應用程式將會大幅變慢。 但是,若要確保應用程式在寄送錯誤和警告之前已清除錯誤和警告,請使用偵錯層。 如需詳細資訊,請參閱 使用偵錯層來偵錯應用程式

注意

針對 Windows 7 平臺更新的 Windows 7(KB2670838)或 Windows 8.x,若要建立支援偵錯層的裝置,請安裝適用於 Windows 8.x 的 Windows 軟體開發工具包 (SDK)以取得 D3D11_1SDKLayers.dll。

注意

針對 Windows 10,若要建立支援偵錯層的裝置,請啟用「圖形工具」選用功能。 移至 [設定] 面板,在 [系統]、[應用程式與功能]、[管理選用功能]、[新增功能],然後尋找 [圖形工具]。

注意

如需如何從遠端偵錯 DirectX 應用程式的詳細資訊,請參閱 從遠端偵錯 DirectX 應用程式。

 

或者,您可以使用 DirectX sdk 隨附的 DirectX 控制台 來啟用/停用偵錯旗標

當偵錯層列出記憶體流失時,它會輸出物件介面指標的清單及其易記名稱。 預設易記名稱為 「<未命名>」。 您可以使用 ID3D11DeviceChild::SetPrivateData 方法和 D3Dcommon.h 中的 WKPDID_D3DDebugObjectName GUID 來設定易記名稱。 例如,若要使用 mytexture.jpg 的 SDKLayer 名稱命名 pTexture,請使用下列程式代碼:

const char c_szName[] = "mytexture.jpg";
pTexture->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );

一般而言,您應該從生產版本編譯這些呼叫。

裝置